我知道这是在 View 具有不返回 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
。
基于类的 View 是 django 中的新功能,它们的文档与其他组件不相上下;希望这会很快改变。目前,了解基于类的 View 如何工作的最佳途径是查看它们的 mixins 提供的内容。
对于 FormView
,mixin 是 FormMixin
和 ProcessFormView
关于python - 窗体 View : View didn't return an HttpResponse object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10827696/