2013-05-22 61 views
2

我有以下的視圖,其延伸的基CreateView的:CreateView的未返回一個HttpResponse

class PeopleImportCsv(FailedLoginMessageMixin, CreateView): 
    model = CsvFile 
    form_class = CustomerCsvImportForm 
    template_name = 'people/customer_uploadcsv_form.html' 

    def get_success_url(self): 
     url = reverse('customer_process_csv', args=[self.object.id]) 
     return url 

    def form_valid(self, form): 
     instance = form.save(commit=False) 
     instance.uploaded_by = self.request.user 
     super(PeopleImportCsv, self).form_valid(form) 

我使用的get_success_url()方法,所以我可以在數據庫中的新創建的對象的id。然而,當我試圖提交我的形式我得到以下ValueError異常消息:

The view people.views.PeopleImportCsv didn't return an HttpResponse object. 

如果我在指定的get_success_url URL(後立即放置assert False),那麼我可以看到它具有正確的網址我期待我能做些什麼來解決這個問題?

+2

你需要'form_valid'方法的返回值(如果你使用'ModelForm'):'return super(Peo pleImportCsv,self).form_valid(form)' –

+1

@Timmy:很好,那就是缺少的。非常感謝你。你可以補充說,作爲答案,我可以接受它嗎? – hellsgate

回答

4

你需要有從form_valid方法return(如果您使用的是ModelForm):

def form_valid(self, form): 
    instance = form.save(commit=False) 
    instance.uploaded_by = self.request.user 
    return super(PeopleImportCsv, self).form_valid(form) 

您可以see the methods signature in the Django source

PS沒有爲引用Django的許多非常有用的網站基於類的視圖在這裏:http://ccbv.co.uk/

+1

什麼是優秀的鏈接!你有其他人嗎? – Glycerine

+0

今天我發現了一個很好的網站,用於一般的django鏈接:http://djangolinks.com/。你可能會在那裏找到更有趣的東西。 –

相關問題