Атрибут next_page

Атрибут next_page класса LogoutView используется для указания URL-адреса, на который пользователь будет перенаправлен после успешного выхода из системы. Значение атрибута задается в виде строки с относительным или абсолютным URL. Атрибут можно переопределить как в файле urls.py при регистрации маршрута, так и в настройках проекта с помощью параметра LOGOUT_REDIRECT_URL.

Синтаксис

pythonfrom django.contrib.auth.views import LogoutView

class CustomLogoutView(LogoutView):
  next_page = '/some-url/'

Либо при определении маршрута в файле urls.py:

pythonfrom django.contrib.auth.views import LogoutView

urlpatterns = [
  path('logout/', LogoutView.as_view(next_page='/custom-url/'), name='logout'),
]

Пример . Определение атрибута в классе

Давайте создадим пользовательское представление для выхода из системы, которое перенаправляет пользователя на главную страницу после выхода:

pythonfrom 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:

pythonfrom 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:

python# settings.py
LOGOUT_REDIRECT_URL = '/home/'
python# 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,
    которая выполняет выход пользователя из системы в представлениях