是否有可能通过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