【问题标题】: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 版本,但问题仍然发生。

谢谢大家的提问

【问题讨论】:

标签: python django logout


【解决方案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

        【讨论】:

          猜你喜欢
          • 2019-07-20
          • 2020-07-16
          • 2019-06-10
          • 2014-09-25
          • 2014-01-02
          • 1970-01-01
          • 1970-01-01
          • 2022-08-20
          • 2022-08-22
          相关资源
          最近更新 更多