我有一行urls.py:
url(r'^logout/$', 'django.contrib.auth.views.logout', name="auth_logout"),
在我的模板标签中,我有这一行:
<a href="{% url auth_logout %}">Logout</a>
现在,我想将next_page参数添加到url templatetag,但我无法让它工作。我试过这个:
{% url auth_logout request.path %}"
......而且这个:
{% url auth_logout request,request.path %}
但它们都不起作用。如何使用url templatetag?
为函数提供可选的next_page参数谢谢!
答案 0 :(得分:26)
两件事:
首先,修改您的网址以接受next_page 您的URLConf需要修改以传递到下一页,类似于硬编码重定向:
url(r'^logout/$', 'django.contrib.auth.views.logout', {'next_page': '/'}, name='auth_logout'),
和一个参数化结果:
url(r'^logout/(?P<next_page>.*)/$', 'django.contrib.auth.views.logout', name='auth_logout_next'),
然后修改您的模板以传递next_page
<a href="{% url auth_logout_next /some/location %}">Logout</a>
答案 1 :(得分:26)
对于它的价值,我用这个:
<a href="{% url auth_logout %}?next=/">Logout</a>
答案 2 :(得分:6)
Sander Smits拥有最简单的解决方案。在您的情况下使用:
<a href="{% url "auth_logout" %}?next={{ request.path|urlencode }}">Logout</a>
在更一般的情况下,请使用:
<a href="{% url "auth_logout" %}?next={% url "my_url" my_params |urlencode %}">Logout</a>
答案 3 :(得分:0)
如果有人想通过带有mark_safe和翻译的views.py验证错误提供HTML链接。
我使用此部分注销用户,然后将他发送到密码记录页面。
mark_safe(_("Error message") + '<a href="' + reverse('logout') + '?next=' + reverse('password_recover') + '">' + ugettext("Forgot password?") + '</a>')