{%url%}给出NoReverseMatch错误

时间:2013-12-16 16:02:48

标签: python django django-1.4

我正在使用Django 1.4并收到以下错误

Reverse for 'dj' with arguments '()' and keyword arguments '{'dj_name': u"John O'Callaghan"}' not found.

在数据库中使用John OCallaghan代替John O'Callaghan非常正常,并且不会出错。

这是给出错误的行

<a href="{% url 'dj' dj_name=dj.name %}"><img src="{{ MEDIA_URL }}{{ dj.img }}" class="img-rounded" id="dj_img"/></a>

我在很多地方读到你不应该在Django 1.4中使用{% url %}中的引号。使用{% url dj dj_name=dj.name %}代替{% url 'dj' dj_name=dj.name %}会出现以下错误

TypeError - cannot concatenate 'str' and 'DJ' objects

urls.py

urlpatterns = patterns('hunt.views',
    url(r'^$', views.landing, name='landing'),
    url(r'^top100/$', views.top100, name='top100'),
    url(r'^top100/(?P<dj_name>[a-zA-Z0-9 &-]+)/$', views.dj, name='dj'),
)

1 个答案:

答案 0 :(得分:1)

看过你的网址后,我很惊讶你没有和“O'Callaghan”合作。你的正则表达式确切地指定它接受的字符:a到z,A到Z,0到9,空格,&符号和连字符。撇号不在那里。如果您希望它接受撇号,则需要将其添加到该列表中。

r"^top100/(?P<dj_name>[a-zA-Z0-9 &-']+)/$"