Класс LogoutView
Класс LogoutView применяется для обработки выхода пользователя из системы. Он очищает данные аутентификации в сессии и перенаправляет пользователя на страницу, указанную в атрибуте next_page или в GET-параметре next. По умолчанию класс доступен через встроенное представление django.contrib.auth.views.LogoutView.
Синтаксис
from django.contrib.auth.views import LogoutView
# В urls.py
urlpatterns = [
path('logout/', LogoutView.as_view(), name='logout'),
]
Пример
Создадим URL для выхода пользователя и укажем страницу перенаправления через атрибут next_page:
# urls.py
from django.contrib.auth.views import LogoutView
from django.urls import path
urlpatterns = [
path('logout/', LogoutView.as_view(next_page='/'), name='logout'),
]
При переходе по адресу /logout/ пользователь будет выведен из системы и перенаправлен на главную страницу.
Пример
Используем параметр GET next для динамического перенаправления после выхода:
# urls.py
from django.contrib.auth.views import LogoutView
from django.urls import path
urlpatterns = [
path('logout/', LogoutView.as_view(), name='logout'),
]
# В шаблоне ссылка на выход с параметром next
<a href="{% url 'logout' %}?next=/custom-page/">Выйти</a>
Результат выполнения кода:
"Пользователь выведен и перенаправлен на /custom-page/"
Пример
Настроим собственный шаблон для страницы выхода с подтверждением. Для этого переопределим атрибут template_name:
# urls.py
from django.contrib.auth.views import LogoutView
from django.urls import path
urlpatterns = [
path('logout/', LogoutView.as_view(template_name='registration/logout.html'), name='logout'),
]
# registration/logout.html
<!DOCTYPE html>
<html>
<head>
<title>Выход</title>
</head>
<body>
<h1>Вы вышли из системы</h1>
<a href="/">Вернуться на главную</a>
</body>
</html>
Результат выполнения кода:
"Отображается кастомная страница выхода"
Пример
При необходимости можно задать атрибут next_page динамически во вьюхе или через настройки. Если атрибут не задан, используется значение параметра GET next, а если и его нет - то настройка LOGOUT_REDIRECT_URL:
# settings.py
LOGOUT_REDIRECT_URL = '/accounts/login/'
# urls.py
from django.contrib.auth.views import LogoutView
from django.urls import path
urlpatterns = [
path('logout/', LogoutView.as_view(), name='logout'),
]
Результат выполнения кода:
"Перенаправление на /accounts/login/ после выхода"
Смотрите также
-
функция
authenticate,
которая проверяет учетные данные пользователя -
класс
LoginView,
который обрабатывает вход пользователя в систему -
функция
logout,
которая выполняет выход вручную -
декоратор
login_required,
который ограничивает доступ к представлениям