Python из django.contrib.auth.views import logout ImportError: невозможно импортировать имя 'logout'

Я настроил свой python env с python 3.5, но я получаю следующую ошибку, когда запускаю свой сервер с командой 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

Я попытался переустановить ENV и изменить версию Python, но проблема все еще не устранена.

Спасибо за ваши вопросы, ребята

7 ответов

Решение

Эй, похоже, вы используете не ту версию Django, django.contrib.auth.views.logout недоступна в вашей текущей версии django, попробуйте понизить версию django до более низкой версии с помощью этой команды: sudo pip install Django==2.0.2 или измените импорт, чтобы использовать logout_view

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

У меня была эта ошибка, и я нашел решение, найденное здесь. Удалить виды из импорта

У меня работает в 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

Работал для выхода тоже.

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.x, документы

from django.contrib.auth import logout

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

Это код, который я добавил в 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!

В последней версии Django (django == 3.2.4) импорт должен быть следующим

from django.contrb.auth.views import LogoutView

Pyhton очень чувствителен к регистру... убедитесь, что ваш код содержит правильные пробелы. Я выхожу из этой ошибки и делаю функции, созданные в views.py, не выровненными

Другие вопросы по тегам