Как предотвратить нацеливание redirect_to_login на LOGIN_REDIRECT_URL
В общем, когда пользователь входит в систему, мое приложение перенаправляет его на dashboard-overview:
# settings.py
# Login and Logout target routes
LOGIN_URL = 'login'
LOGIN_REDIRECT_URL = 'dashboard-overview'
LOGOUT_REDIRECT_URL = '/'
Однако для конкретного случая я хочу, чтобы пользователь был перенаправлен на 'calculator-page' с помощью функции helper, которая не работает, поскольку пользователь снова перенаправляется на значение LOGIN_REDIRECT_URL.
# views.py
def render_calculator(request, slug):
"""
Renders the calculator page
"""
# Check for the user being authenticated
if not request.user.is_authenticated:
return redirect_to_login('calculator-page')
# routes to http://127.0.0.1:8000/login/?next=calculator-page which looks fine,
# but then it fails after login to re-route as specified and sends to
# 'dashboard-overview' again
else:
club_obj = Offer.objects.get(club__slug=slug)
# Create Context
context = {
'club_obj': club_obj,
}
return render(request, 'core/calculator.html', context)
Проблема заключается в вашем шаблоне для представления входа в систему - вам не хватает поля формы next, которое указывает Django, куда перенаправить пользователя после того, как он вошел в систему. Смотрите документацию для примера кода шаблона для этого представления.
Конкретно, вам нужно добавить это внутри вашей формы:
<input type="hidden" name="next" value="{{ next }}">
Сейчас это отсутствует, что означает, что Django всегда будет по умолчанию использовать LOGIN_REDIRECT_URL.