2013-08-21 60 views
1

這個問題看起來很簡單,它在SO中被多次描述,但我仍然無法弄清楚它爲什麼不能在我的情況下工作。Django:反向未找到>模板中的{%url%}

所以,我在urls.py聲明的網址

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

,並在我的模板我打電話的URL

<a href="{% url 'list_by_country' country.country__name %}" >{{ country.country__name }}</a> 

不過,我得到錯誤消息 url無法逆轉

Reverse for 'list_by_country' with arguments '(u'United Kingdom',)' and keyword arguments '{}' not found 

什麼導致了反向錯誤?參數中的空格可能不允許?


回答

4

問題是「英國」與正則表達式不匹配[-\w]+。如果你還想匹配空格,你應該改變你的正則表達式爲[-\w\ ]+。例如:

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

您也可以選擇匹配\s而不是隻是一個空格字符。

+0

另請參閱:http://stackoverflow.com/questions/3675368/django-url-pattern-for-20 –