2017-03-07 5 views
2

私はユーザーが自分の投稿を作成/更新できるビューを持っています。しかし、ユーザーが編集を終えたら、投稿に戻ることができます(要約)。しかし、どこかで私が見つけることができないエラーがあります。どのような問題が起こっているのでしょうか?NoReverseMatchエラーDjango - UpdateView

エラー:1)引数 '()'およびキーワード引数 '{' id ':2}'がない 'aircraftdetail'は逆転します。 []

2)リターンHttpResponseRedirect(instance.get_absolute_url())

3)リターン逆( 'aircraftdetail'、kwargsからは= { "ID":自己0パターン(複数可)を試みました。 ID})

views.py

def AircraftUpdate(request, id=None): 
    instance = get_object_or_404(Aircraft, id=id) 
    form = AircraftForm(request.POST or None, instance=instance) 
    if form.is_valid(): 
     instance = form.save(commit=False) 
     instance.save() 
     return HttpResponseRedirect(instance.get_absolute_url()) 
    context={"aircraft":instance, "form":form} 
    return render(request,'aircraft_form.html',context) 

Models.py

class Aircraft(models.Model): 
    title = models.CharField(max_length=50, default="") 
    image = models.ImageField(upload_to = 'static/image_upload', blank=True) 
    cost = models.DecimalField(max_digits=8, decimal_places=3) 

def get_absolute_url(self): 
     return reverse('aircraftdetail', kwargs={"id": self.id}) 

Urls.py - 航空機

urlpatterns = [ 
    url(r'^detail/(?P<id>\d+)/$', views.AircraftDetail, name='AircraftDetail'), 
    url(r'^detail/(?P<id>\d+)/edit/$', views.AircraftUpdate, name='AircraftEdit'), 
    url(r'^$', views.AircrafList, name='aircraft'),] 

Urls.py AviationSite(メイン)

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'aircraft/', include('aircraft.urls')), 
    url(r'^login/', login_view, name="login"), 
    url(r'^logout/', logout_view, name="logout"), 
    url(r'^register/', register_view, name="register"), 
    url(r'^aircraft/create/$', AircraftCreate),] 
+0

Pythonでは、あなたのビュー関数 'aircraft_update'を呼び出すことをお勧めします。 'AircraftUpdate'を使うと、他のDjangoユーザにクラスベースのビューのように見えます。 – Alasdair

答えて

3

あなたのURLパターンは `名= 'AircraftDetail'(大文字であり'A'と 'D'):

あなたが reverseを呼び出す aircraftdetail(すべて小文字)と一致しない

return reverse('aircraftdetail', kwargs={"id": self.id}) 

変更そのうちの一つは、彼らが(すべて小文字はジャンゴでより一般的である)と一致するようにします。

+0

私は文字通り今はとても馬鹿だと感じています。この小さな間違いを指摘してくれてありがとう –