Для добавления перенаправления (redirect) в Django LoginView, вам потребуется переопределить метод form_valid
в вашем наследнике LoginView.
Перед тем как приступить, убедитесь, что у вас есть следующие импорты:
from django.contrib.auth.views import LoginView from django.urls import reverse_lazy from django.shortcuts import redirect
Затем создайте свой собственный класс наследующийся от LoginView:
class MyLoginView(LoginView): def form_valid(self, form): # Выполните вход пользователя self.login(form.get_user()) # Перенаправьте пользователя на страницу, которую хотите return redirect(reverse_lazy('my_app:my_view_name'))
В этом коде, вы переопределили метод form_valid
для выполнения дополнительных действий при успешной аутентификации пользователя. После успешной аутентификации, пользователь будет перенаправлен на страницу с именем my_view_name
в вашем приложении my_app
.
Не забудьте добавить переменную URL с именем view_name в своем файле urls.py для обработчика, на который хотите перенаправить пользователя.
from django.urls import path from . import views app_name = 'my_app' urlpatterns = [ path('my-view/', views.my_view, name='my_view_name'), ]
Убедитесь, что в urls.py
вашего приложения добавлено пространство имен app_name
.
app_name = 'my_app'
Теперь вы можете использовать MyLoginView
вместо стандартного LoginView
в вашем url-шаблоне:
from django.urls import path from . import views urlpatterns = [ path('login/', views.MyLoginView.as_view(), name='login'), ]
Таким образом, при успешной аутентификации пользователь будет перенаправлен на страницу my_view
.