2013-01-07 13 views
2

我有一個名爲工作區的應用程序,Django的基於類的視圖中創建然後重定向到詳細的錯誤

在我form_valid定義

某處在我

def form_valid(self, form): 
    obj = form.instance 
    obj.owner = self.request.user 
    obj.sort_order = Project.default_sort_order() 
    obj.workspace = get_object_or_404(Workspace, pk=self.kwargs['pk']) 
    context = self.get_context_data() 
    attribute_form = context['attribute_formset'] 
    if attribute_form.is_valid(): 
     self.object = form.save() 
     for aform in attribute_form: 
      aform.instance.owner = self.request.user 
      attribute = aform.save() 
      self.object.attributes.add(attribute) 
     return HttpResponseRedirect(reverse(self.get_success_url())) 
    else: 
     return self.render_to_response(self.get_context_data(form=form)) 

和我對get_success_url定義:

def get_success_url(self): 
     return reverse('workspace_project', kwargs={'pk':self.object.pk}) 

,併爲我的網址定義是:

url(r'^project/(?P<pk>\d+)$', ProjectDetailView.as_view(), name='workspace_project'), 

包含在主URL配置是這樣的:

url('^workspace/', include('workspace.urls')), 
然而

,每當創建成功後,我收到此重定向錯誤:

NoReverseMatch at /workspace/workspace/3/create_project 

Reverse for '/workspace/project/12' with arguments '()' and keyword arguments '{}' not found. 

我參觀了URL /workspace/project/12,我可以訪問它。爲什麼這個錯誤呢?

在此先感謝!

回答

2

爲什麼你要使用reverse()兩次?都在你的get_success_url()和你的HttpResponseRedirect()中。你也可能想引用self.object.get_success_url()。

+1

拍攝,這是錯的。哈哈,謝謝XD – yretuta

相關問題