来自django.contrib.auth.views的Python导入注销ImportError:无法导入名称' logout'

时间:2018-06-03 17:36:53

标签: python django logout

我已经使用python 3.5配置了我的python env,但是当我使用命令python manage.py runserver运行我的服务器时出现以下错误

from django.contrib.auth.views import logout
ImportError: cannot import name 'logout'

这是我的配置

dj-database-url==0.5.0
Django==2.1a.1
gunicorn==19.8.1
numpy==1.14.3
psycopg2==2.7.4
pytz==2018.4
whitenoise==4.0b4

我尝试重新安装我的环境和更改python版本,但问题仍在发生。

感谢您的问题

6 个答案:

答案 0 :(得分:2)

嘿,看起来你使用的是错误的django版本,django.contrib.auth.views.logout在你当前的django版本中不可用,请尝试使用此命令将django版本降级为较低版本: sudo pip install Django==2.0.2 或更改导入以使用logout_view

答案 1 :(得分:2)

settings.py

LOGIN_REDIRECT_URL = '/'
LOGOUT_REDIRECT_URL = '/'

urls.py

from django.conf.urls import url
from django.contrib.auth.views import LogoutView

urlpatterns = [
    url(r'^logout$', LogoutView.as_view(), name='logout'),
]

它在django 3.0.x上对我有用

答案 2 :(得分:1)

这适用于django 2.xdocs

from django.contrib.auth import logout

def logout_view(request):
    logout(request)
    # Redirect to a success page.

答案 3 :(得分:1)

ImportError: cannot import name 'login' from 'django.contrib.auth.views'

我遇到此错误,并在这里寻找解决方案。 Remove views from import

在Python 3.7和Django 2.2中为我工作。无需降级到Django 2.0.4(因为LTS在2.2中)

正是这个原因导致了我的错误。

from django.contrib.auth.views import login

必须将其更改为

from django.contrib.auth import login

也为注销工作。

答案 4 :(得分:0)

这是我添加到urls.py中以使登录正常工作的代码:

def my_logout(request):
    logout(request)
    return redirect('index')

连同urlpatterns

path('logout/', my_logout, name="logout"),

在Python 2.7,Django 2.1.5中为我工作!

答案 5 :(得分:0)

在最新版本的 Django (django == 3.2.4) 中,导入应该如下

from django.contrb.auth.views import LogoutView