是否有可能通过Django的{%url%}模板标签传递查询参数?

我想将请求参数添加到{% url %}标记,例如?office=foobar

这可能吗? 我找不到任何东西。

不,因为GET参数不是URL的一部分。

只需将它们添加到最后:

 <a href="{% url myview %}?office=foobar"> 

对于Django 1.5+

 <a href="{% url 'myview' %}?office=foobar"> 

一种混合当前参数与新的参数的方法:

 {% url 'order_list' %}?office=foobar&{{ request.GET.urlencode }} 

修改您的设置以使请求variables:

 from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP TEMPLATE_CONTEXT_PROCESSORS = TCP + ( 'django.core.context_processors.request', ) 

首先,一个愚蠢的答案:

 {% url my-view-name %}?office=foobar 

一个严肃的问题:不,你不能。 Django的URLparsing器只匹配URL的path部分,因此{% url %}标记只能反转URL的这一部分。

如果参数是variables,则使用urlencode

 <a href="{% url 'myview' %}?office={{ some_var | urlencode }}"> 

或者像空格这样的特殊字符可能会破坏你的URL。

url文档没有提及直接使用url的方法: https : //docs.djangoproject.com/en/1.9/ref/templates/builtins/#url