2017-06-22 64 views
1

我的应用程序名称是'canyonero'。我在Pypy 5.6.0上使用Django 1.11。Django - NoReverseMatch。我忽略了什么?

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

还有就是应用程序的路径在我的项目级urls.py:

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

有一个命名空间的网址是

应用程序是在settings.py启用解决了我的应用程序级urls.py:

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是一个有效的记录(在外壳与Event.objects.get()确认)有效的主键,所以它不是。

有什么明显的我可以忽略?

回答

4

\d匹配一个数字。你需要匹配多个数字,所以你需要\d+

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

数字它会是微不足道的。我相信你是对的。将在确认后标记为已回答。 – Ivan