#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/
равно ).