2016-12-17 3 views
0

von sites/models.pyNoReverseMatch Fehler nach

def get_absolute_url(self): 
    return reverse('site-detail', kwargs={'pk':self.pk}) 

sites/urls.py

from django.conf.urls import url 
from sites.views import SiteCreate, SiteUpdate, SiteDelete, IndexView, TestedView, DetailView, ApproveSite 

app_name = 'sites' 
urlpatterns = [ 
    url(r'^$', IndexView.as_view(), name='site-list'), 
    url(r'add/$', SiteCreate.as_view(), name='site-add'), 
    url(r'(?P<pk>[0-9]+)/update/$', SiteUpdate.as_view(), name='site-update'), 
    url(r'delete/$', SiteDelete.as_view(), name='delete'),  
    url(r'tested/$', TestedView.as_view(), name='site-tested'), 
    url(r'(?P<pk>[0-9]+)/$', DetailView.as_view(), name='site-detail'), 
    url(r'approve/$', ApproveSite.as_view(), name='approve') 
] 

von sites/views.py

Form in Django Aktualisierung
class DetailView(generic.DetailView): 
    model = Site 
    template_name = "sites/detail.html" 
    context_object_name = "site" 

sites/forms.py

from django import forms 
from sites.models import Site, Category 

class SiteForm(forms.ModelForm): 
    class Meta: 
     model = Site 
     fields = '__all__' 
     exclude = ('Status',) 

Wenn ich eine Website aktualisieren, um die Form von meiner Website Update Ansicht verwenden, möchte ich es mir auf der Website Detailansicht nehmen, aber es wirft einen NoReverseMatch Fehler. Im Einzelnen:

NoReverseMatch at /sites/1/update/ 
Reverse for 'site-detail' with arguments '()' and keyword arguments '{'pk': 1}' not found. 0 pattern(s) tried: [] 

Warum wird dieser Fehler passiert, und wie kann ich es loswerden, so dass mein App die Detailansicht für meine Website Aufzeichnung zeigt, nach meiner Form vorgelegt wird?

Antwort

1

Sie haben app_name = 'sites' in Ihrer App urls.py, so dass Sie den sites Namespace enthalten soll, wenn die URL Umkehrung:

def get_absolute_url(self): 
    return reverse('sites:site-detail', kwargs={'pk':self.pk}) 
+0

Great stuff, danke Alasdair. – RubyNoob