在我的模板中,我目前正在使用next
参数将用户重定向回登录页面之前的页面:
<a href="{% url auth_login %}?next={% firstof request.path '/' %}">Log in</a>
The firstof
标签确保万一request.path
无效,那么它将重定向回根 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 "/"
我能想到的最简单的解决方案是添加“?下一个=/”到您的注销网址,这样,一旦用户注销,他将立即重定向到指定的网址,因此没有人会在注销时停留在注销页面。
否则,您将必须重写登录视图并添加所需的任何自定义逻辑,如果 contrib.auth 视图是类视图,这会更容易,但不幸的是,它们目前不是类视图。
因此,复制粘贴并修改:)(我知道复制粘贴不好,但这是您可以向其添加自定义行为的唯一方法)。
该视图位于此处:https://code.djangoproject.com/browser/django/trunk/django/contrib/auth/views.py#L25 https://code.djangoproject.com/browser/django/trunk/django/contrib/auth/views.py#L25
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)