2017-06-22 66 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