2015-03-13 2 views
0

В некоторых случаях я хочу выйти из системы, перенаправить его на страницу входа с параметром next, поэтому, когда пользователь будет успешно вошел в систему, Django должен перенаправить пользователя на какую-то страницу.Django logout_then_login со следующим параметром

Я нашел метод logout_then_login(), но похоже, что он не поддерживает следующий после параметра страницы входа. Я попытался передать параметр «Следующий» в параметре extra_content, но он не работает.

Как я могу это сделать? Может быть, есть другие методы джанго? Говоря в целом, я просто хочу сделать принудительный выход из системы, заставить пользователя повторно войти в систему и перенаправить его на страницу, на которой он был выведен из системы.

ответ

1

From the docs (Прокрутите вниз для этого метода)

logout_then_login (запрос [, login_url, current_app, extra_context])

Регистрирует пользователя из, а затем перенаправляет на страницу входа.

Имя URL: Нет по умолчанию URL не предусмотрено

Дополнительные аргументы:

  • LOGIN_URL: URL-адрес страницы входа для перенаправления. По умолчанию устанавливается значение .LOGIN_URL, если не указано.
  • current_app: Подсказка, указывающая, какое приложение содержит текущий вид. Для получения дополнительной информации см. Стратегию разрешения URL-адресов с именами.
  • extra_context: Словарь контекстных данных, который будет добавлен к данным контекста по умолчанию, переданным в шаблон.

Here we can see that the login method will accept a next parameter as a get variable.

Добавление рядом с login_url должен делать то, что вы хотите:

from django.conf import settings 
... 
def myView(request): 
    login_url = "%s?next=%s" % (settings.LOGIN_URL, request.path) 
    logout_then_login(request, login_url=login_url) 
Смежные вопросы