Django:在模板中找不到反向> {% url %}

neu*_*rix 1 django url reverse arguments

这个问题看起来很简单,并且在 SO 中多次描述,但我仍然无法弄清楚为什么它在我的情况下不起作用。

所以,我在urls.py 中声明了一个 url

urlpatterns = patterns('',
    url(r'^(?P<country>[-\w]+)/$', CountryListView.as_view(), name='list_by_country'),)
Run Code Online (Sandbox Code Playgroud)

在我的模板中,我正在调用 url

<a href="{% url 'list_by_country' country.country__name %}" >{{ country.country__name }}</a>
Run Code Online (Sandbox Code Playgroud)

但是,我收到无法反转 url的错误消息

Reverse for 'list_by_country' with arguments '(u'United Kingdom',)' and keyword arguments '{}' not found
Run Code Online (Sandbox Code Playgroud)

什么导致反向错误?参数中的空格可能不允许吗?


Der*_*wok 5

问题是“英国”与 regex 不匹配[-\w]+。如果您还想匹配空格,则应将正则表达式更改为[-\w\ ]+. 例子:

url(r'^(?P<country>[-\w\ ]+)/$', CountryListView.as_view(), name='list_by_country')
Run Code Online (Sandbox Code Playgroud)

您还可以选择匹配\s而不是单个空格字符。