Django logout перенаправляет меня на страницу администрирования
Я предоставил простую функциональность входа. Для выхода из системы я попытался использовать встроенный. Это мой urls.py:
(r'', include('django.contrib.auth.urls')),
И это мой файл шаблона:
{% if user.is_authenticated %}
logged in as {{ user }}
(<a href="{% url "logout" %}">logout</a>)
{% else %}
Я также включил сайт администратора django по умолчанию. Когда я нажимаю logout
, он показывает мне вид входа в систему администрирования. Как передать атрибут следующей страницы для входа в django, чтобы просмотреть рендеринг?
Ответы
Ответ 1
Если вы видите страницу выхода из административного сайта Django вместо своей собственной страницы выхода из системы (your_application/templates/registration/logged_out.html), проверьте настройку INSTALLED_APPS вашего проекта и убедитесь, что django.contrib. admin появляется после "your_application". Оба шаблона расположены в одном и том же относительном пути, и загрузчик шаблонов Django будет использовать первый найденный.
Ответ 2
Протестировано на Django 1.6:
Я добавляю это в свой urls.py
:
(r'^management/logout/$', 'django.contrib.auth.views.logout'),
И затем использовал его:
<a href="{% url "django.contrib.auth.views.logout" %}?next=/">Log out</a>
Для next
аргумента вы указываете правильный URL.
Протестировано на Django 2.1
Добавить в urlpatterns
в urls.py
:
from django.contrib.auth import views as auth_views
urlpatterns = [
path('logout/', auth_views.LogoutView.as_view(), name='logout'),
]
И затем используйте его в шаблоне:
<a href="{% url "logout" %}?next=/">logout</a>
Более подробную информацию можно найти здесь.
Ответ 3
В соответствии с документами вы можете указать параметр next_page в виде выхода из системы.
https://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.views.logout
(r'^logout/$', 'django.contrib.auth.views.logout',
{'next_page': '/logged_out/'})
Ответ 4
Все это достаточно хорошо объяснено в руководстве, есть ли что-то конкретное, что вы не понимаете?
https://docs.djangoproject.com/en/dev/topics/auth/default/#how-to-log-a-user-out
from django.contrib.auth import logout
def logout_view(request):
logout(request)
# Redirect to a success page.
Альтернативно, если вы не хотите создавать свой собственный вид
https://docs.djangoproject.com/en/dev/topics/auth/default/#django.contrib.auth.views.logout
{% url 'logout' next='/some/url/' %}
Ответ 5
i испытывал те же самые результаты после Django на примере... нашел, что этот url работал у меня
url(r'^logout/$', 'django.contrib.auth.views.logout', { 'template_name': 'account/logout.html',}, name='logout' ),
Ответ 6
Самое простое решение:
-
Убедитесь, что ваше приложение находится перед django.contrib.admin
в установленных приложениях в settings.py
.
-
Убедитесь, что ваш шаблон называется logged_out.html
.
Ответ 7
Просто замените загрузчики здесь, и шаблоны auth будут найдены в "your_progect_apps/templates/registration":
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
'loaders': [
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
],
},
},
]
Django v2.1