2015-07-20 11 views
6

Nie mogę zrozumieć, co jest nie tak? Próbowałem utworzyć stronę szczegółów jednego elementu, jak na przykład na http://tutorial.djangogirls.org/en/extend_your_application/index.html i to nie działa w moim projekcie, ale w ćwiczeniach wszystko było dobrze.Django NoReverseMatch

komunikat błędu: NoReverseMatch w/

Reverse for 'events.views.event_detail' with arguments '()' and 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' 

aplikacja urls.py

from django.conf.urls import include, url 
from . import views 

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

aplikacja views.py

from django.shortcuts import render, get_object_or_404 
from django.utils import timezone 
from .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}) 
+0

Have widziałeś [to pytanie] (https://stackoverflow.com/questions/21240680/django-noreversematch)? –

+0

Czy możesz pokazać główny adres URL conf? – karthikr

+0

ROOT_URLCONF = 'mysite.urls' –

Odpowiedz

9

nie wykazały swoje mysite.urls, ale z komunikatem o błędzie wygląda masz zrobić coś takiego to:

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

Musisz zrezygnować z kończenia $, ponieważ oznacza to koniec wyrażenia regularnego; nic nie może się równać po tym. Powinno być:

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

pamiętać, że należy również dać adresów URL zdarzeń nazwy, aby łatwiej odwołać:

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

tak, że można teraz zrobić:

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

Dziękuję za odpowiedź. ale mysite.urls niczego i tylko dwa korzenie: 'z django.conf.urls importu obejmują, URL z importu django.contrib Administrator urlpatterns = [ URL (R'^Administrator /”obejmują (admin.site.urls)), adres URL (r '^ $, include ("events.urls")), ]' –

+0

Dokładnie to, co powiedziałem. W linii zawierającej events.urls masz kończące się '$'. –

+0

Dziękuję bardzo! To jest praca! Masz odpowiedni problem w mysite.urls z "$" –

Powiązane problemy