簡體   English   中英

FormView:視圖未返回HttpResponse對象

[英]FormView: View didn't return an HttpResponse object

我知道這是由於視圖具有明顯不返回HttpResponse的代碼路徑引起的。 我是django的新手,所以這可能是完全錯誤的。

這是FormView代碼。 我需要重寫render_to_response嗎?

class AddAdvertView(FormView):
    form_class = NewAdForm

    def get(self, *args, **kwargs):
            self.campaign = get_object_or_404(Campaign, id__exact = self.kwargs['campaign_id'])

    def post(self, request, *args, **kwargs):
            pass

    def get_form(self, form_class):
            return form_class(initial = {}, campaign = self.campaign)

    def get_success_url(self):
            return self.request.META.get('HTTP_REFERER', None)

    def form_valid(self, form):
            return HttpResponse('form valid')

    def form_invalid(self, form):
            return HttpResponse('form invalid')

這可能是您在get方法中想要的:

 def get(self, *args, **kwargs):
     campaign = get_object_or_404(Campaign, id=self.kwargs['campaign_id'])
     ctx = self.get_context_data()
     ctx['campaign'] = campaign
     return self.render_to_response(ctx)

如果您不對post進行任何操作,則不應使用任何方法來覆蓋它。 同樣,您無需覆蓋get_form

基於類的視圖在django中是新的,它們的文檔與其他組件不兼容。 希望這會很快改變。 目前,了解基於類的視圖如何工作的最佳位置是查看其混合提供的內容。

對於FormView ,混合是FormMixinProcessFormView

您應該從postget方法返回一些東西,至少是super(AddAdvertView, self).get(*args, **kwargs) 在你的代碼get剛剛創建的屬性(盡管它應該返回一個空表),並post確實什么都沒有(盡管它應該處理的形式)。 似乎您不應該重新定義postget所有內容,並以dispatch方法檢索廣告系列(不要忘記調用super(AddAdvertView, self).dispatch(dispatch arguments)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM