[英]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
,混合是FormMixin
和ProcessFormView
您應該從post
和get
方法返回一些東西,至少是super(AddAdvertView, self).get(*args, **kwargs)
。 在你的代碼get
剛剛創建的屬性(盡管它應該返回一個空表),並post
確實什么都沒有(盡管它應該處理的形式)。 似乎您不應該重新定義post
並get
所有內容,並以dispatch
方法檢索廣告系列(不要忘記調用super(AddAdvertView, self).dispatch(dispatch arguments)
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.