尝试注销 django 时出现运行时错误

Posted

技术标签:

【中文标题】尝试注销 django 时出现运行时错误【英文标题】:Runtime error when trying to logout django 【发布时间】:2015-10-25 02:01:41 【问题描述】:

当我尝试从我的 django 项目中注销时,我收到以下错误:

“调用 Python 对象时超出最大递归深度”

这是注销按钮的网址:

url(r'^logout', 'users.views.logout', name='logout'),

这是视图:

from django.shortcuts import render
from deck1.models import Card
from django.template import RequestContext 
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect, HttpResponse
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.forms import AuthenticationForm
from django.contrib.auth import login, authenticate, logout
from django.contrib.auth.decorators import login_required
from users.forms import RegisterForm

@login_required
def logout(request):
    logout(request)
    return  HttpResponseRedirect('/deck')

【问题讨论】:

【参考方案1】:

您的视图 logout 正在覆盖内置 logout 函数的命名空间。使用 as 关键字为 django.contrib.auth.login 函数定义别名。

from django.contrib.auth import logout as django_logout

@login_required
def logout(request):
    django_logout(request)
    return  HttpResponseRedirect('/deck')

【讨论】:

【参考方案2】:

使用这个:

@login_required
def user_logout(request):
    logout(request)
    return  HttpResponseRedirect('/deck')

并据此更改您的网址

【讨论】:

您能否正确格式化您的代码【参考方案3】:

我也遇到过同样的问题。请将您的视图函数名称从 logout 更改为任何其他名称或使用其他名称导入 logout。

def logout(request):
    django_logout(request)
    return  HttpResponseRedirect('/deck')

您也可以简单地在代码中更改它来解决此问题。

from django.contrib.auth import login, authenticate, logout as logoutUser

只需更改此行,您的代码就会正常运行。谢谢。

【讨论】:

以上是关于尝试注销 django 时出现运行时错误的主要内容,如果未能解决你的问题,请参考以下文章

Django:安装 requirements.txt 时出现 distutils 错误

运行 manage.py runserver Django 时出现缩进错误

尝试创建 ActiveX 组件时出现运行时错误 429

尝试在 AWS Beanstalk 上运行 django 项目时出现实例配置文件不存在的错误

使用 selenium 运行 django-test 时出现断管错误

尝试保存图像时出现 Android 运行时错误