Чтобы остановить перенаправление назад к выходу из системы, когда URL входа в систему заканчивается на? Next=/accounts/logout/ в Django
В моем шаблоне я сейчас использую 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 ответ
Самое простое решение, о котором я могу подумать, это добавить "? Next=/" в ваш URL для выхода, таким образом, как только пользователь выйдет из системы, он будет немедленно перенаправлен на указанный URL, поэтому никто никогда не останется в системе. страница при выходе.
В противном случае вам пришлось бы переписать представление входа в систему и добавить любую нужную вам логику, что было бы проще, если бы представления contrib.auth были представлениями класса, что, к сожалению, в настоящее время не так.
Так что скопируйте, вставьте и измените:) (я знаю, что копирование плохо, но это единственный способ, которым вы можете добавить к нему пользовательское поведение).
Представление находится здесь: https://code.djangoproject.com/browser/django/trunk/django/contrib/auth/views.py