Как настроить форму входа в систему для перенаправления на определенный URL-адрес? - PullRequest
0 голосов
/ 02 сентября 2011

Цель

Когда пользователь посещает http://myserver/accounts/login/?next=/sentry, он должен запросить учетные данные для входа, а затем перенаправить на /sentry.Это поведение, если вы используете декоратор login_required.Я не использую этот декоратор.

Симптом

В настоящее время после успешного входа в систему он перенаправляет на /accounts/profile, даже если указан параметр запроса next,

Вопрос

  1. Где переопределить URL-адрес перенаправления по умолчанию /accounts/profile?
  2. Почему прохождения next недостаточно?

Ответы [ 2 ]

2 голосов
/ 02 сентября 2011

Чтобы переопределить цель перенаправления по умолчанию, установите параметр LOGIN_REDIRECT_URL, который по умолчанию равен /accounts/profile.

https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-LOGIN_REDIRECT_URL

Я не могу ответить на другую часть вопроса, не зная, как вы регистрируете пользователя. Используете ли вы свой собственный вид и функцию login()? В этом случае вам нужно обработать параметр next самостоятельно.

Если вы используете общий вид, вы можете передать параметр redirect_field_name, который по умолчанию должен быть «следующим».

https://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.views.login

1 голос
/ 02 сентября 2011

Во-первых, вы можете переопределить URL-адрес перенаправления по умолчанию, установив LOGIN_REDIRECT_URL в settings.py.

В ответ на вторую часть вашего вопроса - вам нужно убедиться, что в форме входа в систему есть скрытый ввод, содержащий next. Как выглядит ваш шаблон? Он должен содержать что-то вроде этого:

<form method='post'>{% csrf_token %}
  {{ form.as_p }}
  <input type="hidden" name="next" value="{{ next }}">
  <input type="submit" value="Log in" class="big_button">
</form>

Если вы передали redirect_field_name в качестве параметра для представления входа в систему, то вам понадобится это как имя ввода, а не next.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...