Подтвердить что ты не робот

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, чтобы просмотреть рендеринг?

4b9b3361

Ответ 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>

Более подробную информацию можно найти здесь.

Ответ 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

Самое простое решение:

  1. Убедитесь, что ваше приложение находится перед django.contrib.admin в установленных приложениях в settings.py.

  2. Убедитесь, что ваш шаблон называется 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