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'的主要内容,如果未能解决你的问题,请参考以下文章

Django 框架 第二章

一. Django入门

settings

django-admin

django的orm介绍以及静态文件介绍

无法导入名称 import_by_path