在我的模板中,我目前正在使用next
参数将用户重定向到登录页面之前的页面:
<a href="{% url auth_login %}?next={% firstof request.path '/' %}">Log in</a>
firstof
代码确保request.path
无效,然后重定向回根网址。
这适用于除一个页面之外的每个页面:注销页面。如果我想切换用户,那么我会先注销,然后点击登录。但是我的网址将是
http://127.0.0.1:8000/accounts/login/?next=/accounts/logout/
因此,只要我登录,我就会立即重新登录。如何使用类似伪代码修改模板:
if request.path and request.path != reverse( 'auth_logout' )
return request.path
return "/"
答案 0 :(得分:2)
我能想到的最简单的解决方案是将“next = /”添加到您的注销网址,这样,只要用户注销,他就会立即重定向到指定的网址url,所以在退出时没有人会留在退出页面。
否则你将不得不重写登录视图并添加你需要的任何自定义逻辑,如果contrib.auth视图是类视图,这将更容易,它们目前不是很不幸。
所以复制粘贴并修改:)(我知道复制粘贴很糟糕,但这是你可以添加自定义行为的唯一方法)。
该视图位于此处: https://code.djangoproject.com/browser/django/trunk/django/contrib/auth/views.py#L25