Как предотвратить нацеливание 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.

Вернуться на верх