我想将请求参数添加到{% url %}
标记,例如?office=foobar
。
这可能吗?我找不到任何东西。
答案 0 :(得分:150)
不,因为GET参数不是网址的一部分。
只需将它们添加到最后:
<a href="{% url myview %}?office=foobar">
对于Django 1.5 +
<a href="{% url 'myview' %}?office=foobar">
答案 1 :(得分:30)
将当前参数与新参数混淆的方法:
{% url 'order_list' %}?office=foobar&{{ request.GET.urlencode }}
将您的设置修改为具有请求变量:
from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP
TEMPLATE_CONTEXT_PROCESSORS = TCP + (
'django.core.context_processors.request',
)
答案 2 :(得分:18)
如果参数是变量
,请使用urlencode
<a href="{% url 'myview' %}?office={{ some_var | urlencode }}">
或者像空格这样的特殊字符可能会破坏您的网址。
url
的文档未提及直接使用url
的方法:https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#url
答案 3 :(得分:8)
首先,一个愚蠢的回答:
{% url my-view-name %}?office=foobar
严肃的回答:不,你做不到。 Django的URL解析器仅匹配URL的路径部分,因此{% url %}
标记只能反转该部分URL。
答案 4 :(得分:1)
如果您的网址(和视图)包含变量 office
,那么您可以像这样传递它:
{% url 'some-url-name' foobar %}
或者像这样,如果你有多个参数:
{% url 'some-url-name' office='foobar' %}
文档:https://docs.djangoproject.com/en/3.1/ref/templates/builtins/#url
答案 5 :(得分:0)
尝试一下:
{% url 'myview' office=foobar %}
对我有用。基本上,它对该链接进行反向操作并应用给定的参数。