Атрибут next_page
Атрибут next_page класса LogoutView используется для указания URL-адреса, на который пользователь будет перенаправлен после успешного выхода из системы. Значение атрибута задается в виде строки с относительным или абсолютным URL. Атрибут можно переопределить как в файле urls.py при регистрации маршрута, так и в настройках проекта с помощью параметра LOGOUT_REDIRECT_URL.
Синтаксис
from django.contrib.auth.views import LogoutView
class CustomLogoutView(LogoutView):
next_page = '/some-url/'
Либо при определении маршрута в файле urls.py:
from django.contrib.auth.views import LogoutView
urlpatterns = [
path('logout/', LogoutView.as_view(next_page='/custom-url/'), name='logout'),
]
Пример . Определение атрибута в классе
Давайте создадим пользовательское представление для выхода из системы, которое перенаправляет пользователя на главную страницу после выхода:
from django.contrib.auth.views import LogoutView
from django.urls import path
class MyLogoutView(LogoutView):
next_page = '/' # Перенаправление на главную страницу
urlpatterns = [
path('logout/', MyLogoutView.as_view(), name='logout'),
]
В этом примере после выхода пользователь будет перенаправлен на URL-адрес "/". Это эквивалентно использованию параметра next_page внутри метода as_view.
Пример . Использование параметра в as_view
Переопределим атрибут непосредственно при вызове метода as_view в файле urls.py:
from django.contrib.auth.views import LogoutView
from django.urls import path
urlpatterns = [
path('logout/', LogoutView.as_view(next_page='/accounts/login/'), name='logout'),
]
В этом случае атрибут next_page переопределяется на "/accounts/login/". Такой подход удобен, когда требуется гибко настраивать маршруты без создания отдельного класса.
Пример . С настройками проекта
Значение атрибута можно задать глобально в файле настроек с помощью параметра LOGOUT_REDIRECT_URL:
# settings.py
LOGOUT_REDIRECT_URL = '/home/'
# urls.py
from django.contrib.auth.views import LogoutView
from django.urls import path
urlpatterns = [
path('logout/', LogoutView.as_view(), name='logout'),
]
В этом случае при использовании стандартного LogoutView без явного указания next_page будет использовано значение из настроек. Если атрибут задан в нескольких местах, приоритет имеет значение, переданное в метод as_view, затем значение из класса, и только потом параметр из настроек.
Смотрите также
-
класс
LogoutView,
который реализует функциональность выхода пользователя из системы -
атрибут
next_pageкласса LoginView,
который определяет перенаправление после входа в систему -
класс
LoginView,
который реализует функциональность входа пользователя в систему -
функция
logout,
которая выполняет выход пользователя из системы в представлениях