python - Django NoReverseMatch -


i can't understand what's wrong? tried make detail page of 1 item, in example on http://tutorial.djangogirls.org/en/extend_your_application/index.html , doesn't work in project, in exercises good.

error message: noreversematch @ /

reverse 'events.views.event_detail' arguments '()' , keyword arguments '{u'pk': 3}' not found. 1 pattern(s) tried: ['$event/(?p<pk>[0-9]+)/$'] 

html(fragment)

<div class="col-xs-6"><a class="btn btn-primary" href="{% url 'events.views.event_detail' pk=event.pk %}">read more</a></div>          </div> 

settings.py

root_urlconf = 'mysite.urls'  

app urls.py

from django.conf.urls import include, url . import views  urlpatterns = [     url(r'^$', views.events_list),     url(r'^event/(?p<pk>[0-9]+)/$', views.event_detail), ] 

app views.py

from django.shortcuts import render, get_object_or_404 django.utils import timezone .models import event  def events_list(request):     events = event.objects.filter(published_date__lte=timezone.now()).order_by('published_date')     return render(request, 'events/events_list.html', {'events': events})  def event_detail(request, pk):     event = event.objects.get(pk=pk)     return render(request, 'events/event_detail.html', {'event': event}) 

you haven't shown mysite.urls, error message looks have done this:

(r'^events/$', include('events.urls')), 

you need drop terminating $, since means end of regex; nothing can match after that. should be:

(r'^events/', include('events.urls')), 

note should give event urls names, make easier reference:

url(r'^$', views.events_list, name='events_list'), url(r'^event/(?p<pk>[0-9]+)/$', views.event_detail, name='event_detail'), 

so can do:

{% url 'event_detail' pk=event.pk %} 

Comments