2013-05-22 1 views
2

을 반환하지 않습니다 I 기본 CreateView를 확장하는 다음 뷰가 : 나는 그래서 데이터베이스에 새로 생성 된 개체의 ID를 얻을 수있는 get_success_url() 메소드를 사용하고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) 

합니다. 나는 다음과 같은 ValueError를 메시지 얻을 내 양식을 제출하려고 할 때, : 나는 get_success_url의 URL을 (할당 후 즉시 assert False을 배치하면

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

를) 그때는 난 올바른 URL을 가지고 있음을 알 수 이 문제를 해결하려면 어떻게해야합니까? (당신이 ModelForm를 사용하는 경우)

+2

'ModelForm'을 사용하는 경우'form_valid' 메소드에 대해'return'이 필요합니다 :'return super (Peo pleImportCsv, self) .form_valid (form)' –

+1

@Timmy : 우수합니다. 실종되었습니다. 고맙습니다. 그걸 내가 대답 할 수 있도록 받아 들일 수 있을까요? – hellsgate

답변

4

당신은 form_valid 방법에서 return이 필요합니다 :

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

할 수 있습니다 Djangos 많은 참조하기위한 매우 유용한 사이트가있다 see the methods signature in the Django source

PS 클래스 기반 뷰는 다음과 같습니다 : http://ccbv.co.uk/

+1

뛰어난 링크! 다른 사람있어? – Glycerine

+0

일반적으로 django 링크에 대한 좋은 사이트를 발견했습니다 : http://djangolinks.com/. 더 흥미로운 것을 찾을 수 있습니다. –