2013-12-19 33 views
2

我正在使用Django 1.6,django.contrib.auth.views。我正在使用下面的登录和注销url定义。现在,当用户点击我的注销链接时,'logout_then_login'视图被触发,但是当用户重新登录时,'next'参数未定义,并且页面被转发到默认的'accounts/profile'路径。我宁愿发生的事情是logout_then_login视图将“下一个”值转发到登录视图。如何将'next'参数传递给Django Auth logout_then_login视图?

例如,用户在点击注销时位于page/foo/bar上。我希望他们被发送到登录屏幕,'/ foo/bar'被设置为下一个参数,所以当他们再次登录时,他们又回到了他们所在的页面。我希望它是动态的,在单击注销链接时基于request.path。我知道静态解决方案覆盖未定义的下一个默认值。

当前urls.py:

from django.contrib.auth.views import login, logout_then_login 


urlpatterns = patterns('base.views', 
    url(r'^accounts/login/$', login, name='login'), 
    url(r'^accounts/logout/$', logout_then_login, name='logout'), 
) 

我已经使用logout_then_login的extra_context中用参数尝试过,但甚至不知道应该如何看待在模板中使用了一个名为网址:

<a href="{% url 'logout' extra_context={'next': request.path } %}">Log Out</a> 

上午我在正确的轨道上 - 还是有更好的方法来做到这一点?

回答

1

好吧,所以这原来很简单。当我试图将下一个参数塞入url模板标签时,我一直在想它。

我只是需要钉在网址模板标记之后的下一个参数:

<a href="{% url 'logout' %}?next={{request.path}}"> Log Out</a>