Чтобы остановить перенаправление обратно на выход из системы, когда URL-адрес входа заканчивается на? Next = / accounts / logout / в Django - PullRequest
2 голосов
/ 30 марта 2012

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

<a href="{% url auth_login %}?next={% firstof request.path '/' %}">Log in</a>

Тег firstof гарантирует, что в случае request.path недействительно, тогда он будет перенаправлен обратно на корневой URL.

Это хорошо работает на каждой странице, кроме одной: страница выхода из системы.Если бы я захотел сменить пользователя, то сначала я бы вышел из системы, затем нажал кнопку «войти». Но тогда мой URL-адрес был бы

http://127.0.0.1:8000/accounts/login/?next=/accounts/logout/

Так что, как только я войду в систему, я сразу же снова выйду из системы.,Как мне изменить шаблон таким образом, используя такой псевдокод:

if request.path and request.path != reverse( 'auth_logout' )
    return request.path

return "/"

1 Ответ

2 голосов
/ 30 марта 2012

Самое простое решение, которое я могу придумать, это добавить "? Next = /" к URL-адресу выхода, таким образом, как только пользователь выйдет из системы, он будет немедленно перенаправлен на указанный URL-адрес.так что никто никогда не останется на странице выхода из системы при выходе из системы.

В противном случае вам придется переписать представление входа в систему и добавить любую нужную вам логику, что будет проще, если представления contrib.auth были представлениями классов,они в настоящее время не к сожалению.

Так что скопируйте, вставьте его и измените :) (Я знаю, что копирование плохо, но это единственный способ, которым вы можете добавить к нему пользовательское поведение).

Вид находится здесь: https://code.djangoproject.com/browser/django/trunk/django/contrib/auth/views.py#L25

...