2017-06-22 2 views
1

Der Name meiner App ist "canyonero". Ich benutze Django 1.11 auf Pypy 5.6.0.Django - NoReverseMatch. Was übersehe ich?

Die App ist in settings.py aktiviert:

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

Es an die App eine Route in meiner Projektebene urls.py ist:

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

Es gibt eine Namespace-URL zu sein in meiner app-Ebene urls.py aufgelöst:

app_name = 'canyonero' 

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

Und dann dieses Template-Tag gibt mir kein Ende der Trauer:

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

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

Der Fehler Ich erhalte ist:

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

532742 ist ein gültiger Primärschlüssel für einen gültigen Datensatz (mit Event.objects.get() in der Schale bestätigt), so dass es nicht.

Gibt es etwas Offensichtliches, das ich übersehe?

Antwort

4

\d entspricht einer einzelnen Ziffer. Sie müssen mehrere Ziffern übereinstimmen, so benötigen Sie \d+:

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

Zahlen wäre es etwas triviales. Ich glaube, du hast recht; wird als bestätigt markiert. – Ivan