Django-allauth как перенаправить на страницу pervious после входа в систему

#django #django-urls #django-allauth #django-settings

Вопрос:

Я использую Django-allauth , я могу успешно перенаправить его на домашнюю страницу, добавив это в settings.py:

 LOGIN_REDIRECT_URL = '/home'
 

Но могу ли я в любом случае перенаправить его на страницу pervious?

Комментарии:

1. Первый метод, который я могу придумать, который работал для меня раньше, — это написать функцию для каждого отдельного маршрута, которая может запрашивать вход в систему и перенаправлять их на их уважаемое представление. Это звучит сложно, когда я это пишу, поэтому я надеюсь, что кто-нибудь найдет лучший метод

Ответ №1:

То, что вы ищете, должно на самом деле работать из коробки, используя поле перенаправления, которое next по умолчанию: https://docs.djangoproject.com/en/3.1/topics/auth/default/#django.contrib.auth.mixins.AccessMixin.get_redirect_field_name

Представление, которое проверяет наличие разрешения на доступ и перенаправляет на форму входа в систему, должно передавать только URL-адрес, на котором ранее находился пользователь. Если это поле присутствует, пользователь будет перенаправлен на эту конкретную страницу после входа в систему.

Как вы ограничиваете вход в систему? Я полагаю, вы не проходите мимо next ? По @login_required умолчанию установлены декоратор и представления LoginRequiredMixin на основе классов next .

Вот что говорится в документах о том, как LoginView обрабатывает запросы на публикацию:

Если вызывается по почте с предоставленными пользователем учетными данными, он пытается войти в систему пользователя. Если вход в систему выполнен успешно, представление перенаправляется на URL-адрес, указанный в next . Если next не указано, он перенаправляется на settings.LOGIN_REDIRECT_URL (значение по умолчанию /accounts/profile/ равно ).