Django'url'模板标记错误地转义了问号

时间:2017-11-30 19:26:03

标签: python django django-templates escaping

我们最近从Django 1.9升级到1.10,现在出现了以下问题:

urls.py:

url(r'^search/(?:\?q=(?P<q>[^&]*))?$', views.search, {'q': ''}, name='search'),

模板:

<a href="{% url 'issues:search' "foobar" %}">Issues</a> 

使用Django 1.9,结果是

https://127.0.0.1/issues/search/?q=foobar

自Django 1.10起,这会产生以下网址:

https://127.0.0.1/issues/search/%3Fq=foobar

因此,包含查询参数的链接不再起作用。 如何使用Django 1.10?

1 个答案:

答案 0 :(得分:1)

Django URL模式不包括查询字符串参数,这从1.10开始并不是新的,但一直都是这样。您不应将其包含在模式中,并在链接本身中单独添加。

url(r'^search/$', views.search, name='search'),

...

<a href="{% url 'issues:search' %}?q=foobar">