Django - NoReverseMatch。我在俯瞰什么?

时间:2017-06-22 14:35:08

标签: python django

我的应用名称是'canyonero'。我在Pypy 5.6.0上使用Django 1.11。

该应用已在settings.py中启用:

INSTALLED_APPS = [
    ...
    'canyonero.apps.CanyoneroConfig',
    ...
]

我的项目级urls.py中有一条指向该应用的路径:

urlpatterns = [
    ...
    url(r'^product/canyonero/', include('canyonero.urls', namespace='canyonero')),
    ...
]

我的app-level urls.py中有一个名称空间的URL要解析:

app_name = 'canyonero'

urlpatterns = [
    ...
    url(r'^events/(?P<pk>\d)/$', EventDetail.as_view(), name='event'),
    ...
]

然后这个模板标签让我无法忍受悲伤:

{% extends 'common/content.html' %}
{% load static %}

<a href="{% url 'canyonero:event' pk=obj.event_id %}"></a>

我得到的错误是:

NoReverseMatch: Reverse for 'event' with keyword arguments '{u'pk': 532742}' not found. 1 pattern(s) tried: [u'product/canyonero/events/(?P<pk>\\d)/$']

532742是有效记录的有效主键(在shell中用Event.objects.get()确认),所以不是这样。

有什么明显我在俯视吗?

1 个答案:

答案 0 :(得分:4)

\d匹配一位数字。您需要匹配多个数字,因此您需要\d+

url(r'^events/(?P<pk>\d+)/$', EventDetail.as_view(), name='event'),