Python from django.contrib.auth.views import logout ImportError: cannot import name 'logout'
Posted
技术标签:
【中文标题】Python from django.contrib.auth.views import logout ImportError: cannot import name \'logout\'【英文标题】:Python from django.contrib.auth.views import logout ImportError: cannot import name 'logout'Python from django.contrib.auth.views import logout ImportError: cannot import name 'logout' 【发布时间】:2018-11-13 02:47:31 【问题描述】:我已经使用 python 3.5 配置了我的 python 环境,但是当我使用命令 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 版本,但问题仍然发生。
谢谢大家的提问
【问题讨论】:
从django-1.11开始,login、logout等基于函数的视图已经改写为(基于类的视图)[***.com/a/51906537/2351696] 【参考方案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
也适用于注销。
【讨论】:
@MenoTx 询问注销,所以对我有用的工作更改是:from django.contrib.auth import login @sunsetjunks 你的意思是注销?哈哈 对,我的错。你可以从我的上下文中猜到这一点:)【参考方案2】:您好,您好像使用了错误的 django 版本,django.contrib.auth.views.logout
在您当前的 django 版本中不可用,请尝试使用以下命令将您的 django 版本降级到较低版本:
sudo pip install Django==2.0.2
或更改导入以使用logout_view
【讨论】:
【参考方案3】: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 上对我有用
【讨论】:
【参考方案4】:这是给 django 的 2.x
, docs
from django.contrib.auth import logout
def logout_view(request):
logout(request)
# Redirect to a success page.
【讨论】:
【参考方案5】:这是我添加到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 中为我工作!
【讨论】:
cannot import name 'my_logout' from 'account.views' 每当我尝试上述代码时都会出现这种错误。【参考方案6】:在最新版本的 Django (django == 3.2.4) 中,导入应该如下
from django.contrb.auth.views import LogoutView
【讨论】:
以上是关于Python from django.contrib.auth.views import logout ImportError: cannot import name 'logout'的主要内容,如果未能解决你的问题,请参考以下文章