2016-08-13 7 views
0

Джанго 1,10 сильный текстCreateView + переопределение form_valid = не возвращает объект HttpResponse

Не могли бы вы помочь мне понять, почему это приводит:

Вид wiki.views.WikiCreate Ждут» t возвращает объект HttpResponse. Вместо этого вместо него он вернул Нет.

post: Я не вмешивался в цепочку наследования при переопределении почтового метода. Я просто перехватил параметры из url.

form_valid: Я вернул HttpResponse. Но, похоже, где-то позже она исчезла.

urlpatterns = [ 
    url(r'^(?P<model>[-\w]+)/(?P<pk>\d+)/wiki/create/$', WikiCreate.as_view(), name='wiki_create'), 
] 



class WikiCreate(CreateView): 
    model = Wiki 
    fields = ['article'] 

    def post(self, request, *args, **kwargs): 
     #For wiki history. 
     self.author = request.user 

     # Parameters from url reflect fields not shown to user. 
     self.related_model = kwargs.get('model') 
     self.related_object_id = kwargs.get('pk') 

     super(WikiCreate, self).post(request, *args, **kwargs) 

    def form_valid(self, form): 
     """ 
     Only "article" field was shown to tue user. 
     Now we save fields that were not explicitly shown (but were in the url). 
     """ 
     self.object = form.save(commit=False) 
     self.object.related_model = self.related_model 
     self.object.related_id = self.related_object_id 
     self.object.save() 
     return HttpResponseRedirect(self.get_success_url()) 

ответ

0

Вы не возвращал ответ от супер вызова в post.

Обратите внимание, что это редко рекомендуется переопределять этот метод, и вам, конечно, не нужно было здесь. Вы можете получить доступ к этим kwargs непосредственно в form_valid.

+0

спасибо. – Michael

Смежные вопросы