Атрибут next_page
Атрибут next_page класса LoginView задаёт
URL-адрес, на который будет перенаправлен пользователь
после успешной аутентификации. Если атрибут не указан,
то перенаправление выполняется на страницу, указанную
в параметре next в POST-запросе, или на значение
из настроек LOGIN_REDIRECT_URL.
Атрибут позволяет явно задать маршрут для всех случаев
успешного входа, переопределяя стандартную логику
перенаправления.
Синтаксис
from django.contrib.auth.views import LoginView
class CustomLoginView(LoginView):
next_page = '/some-url/'
Пример
Настроим представление для входа, которое после успешной аутентификации всегда перенаправляет на страницу профиля:
from django.contrib.auth.views import LoginView
from django.urls import reverse_lazy
class ProfileLoginView(LoginView):
template_name = 'accounts/login.html'
next_page = reverse_lazy('profile')
Пример
Используем динамическое определение URL с помощью
reverse_lazy для перенаправления на главную
страницу после входа:
from django.contrib.auth.views import LoginView
from django.urls import reverse_lazy
class HomeLoginView(LoginView):
next_page = reverse_lazy('home')
Пример
Перенаправление с использованием строкового URL
без применения reverse_lazy:
from django.contrib.auth.views import LoginView
class DashboardLoginView(LoginView):
next_page = '/dashboard/'
Пример
Комбинируем использование атрибута next_page
с параметром next в POST-запросе. Если оба
заданы, приоритет имеет параметр next:
from django.contrib.auth.views import LoginView
from django.urls import reverse_lazy
class FlexibleLoginView(LoginView):
template_name = 'accounts/login.html'
next_page = reverse_lazy('default_redirect')
# При POST-запросе с next='/special/' будет
# перенаправление на '/special/', иначе на
# 'default_redirect'.
Смотрите также
-
атрибут
template_name,
который задаёт шаблон для страницы входа -
класс
LogoutView,
который обрабатывает выход пользователя из системы -
функция
login,
которая выполняет вход пользователя в систему -
декоратор
login_required,
который ограничивает доступ к представлениям