Django模板标签:如何在{url auth_logout}中发送next_page?

时间:2009-08-18 21:30:04

标签: django

我有一行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参数

谢谢!

4 个答案:

答案 0 :(得分:26)

两件事:

  1. django.contrib.auth.views.logout()采用您未提供的可选next_page
  2. url templatetag具有逗号分隔的参数
  3. 首先,修改您的网址以接受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>')