Python FormView:View&x27;t返回HttpResponse对象
我知道这是因为视图的代码路径显然不返回Python FormView:View&x27;t返回HttpResponse对象,python,django,django-generic-views,Python,Django,Django Generic Views,我知道这是因为视图的代码路径显然不返回HttpResponse。我是django的新手,所以这可能是完全错误的 这是FormView代码。我是否需要覆盖呈现\u到\u响应 class AddAdvertView(FormView): form_class = NewAdForm def get(self, *args, **kwargs): self.campaign = get_object_or_404(Campaign, id__exact = s
HttpResponse
。我是django的新手,所以这可能是完全错误的
这是FormView代码。我是否需要覆盖呈现\u到\u响应
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')
您应该从
post
和get
方法返回一些内容,至少super(AddAdvertView,self).get(*args,**kwargs)
。在您的代码中,get
刚刚创建了一个属性(尽管它应该返回一个空表单),而post
什么都不做(尽管它应该处理表单)。似乎您根本不应该重新定义post
和get
,并在dispatch
方法中检索您的活动(不要忘记调用super(AddAdvertView,self)。dispatch(dispatch参数)
)您至少应该从post
和get
方法返回一些内容(AddAdvertView,self).get(*args,**kwargs)。在您的代码中get
刚刚创建了一个属性(虽然它应该返回一个空表单),而post
根本不做任何事情(尽管它应该处理表单)。似乎您根本不应该重新定义post
和get
,并在dispatch
方法中检索您的活动(不要忘记调用super(AddAdvertView,self)。dispatch(dispatch arguments),这可能是您在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\u form
基于类的视图在Django中是新的,它们的文档与其他组件不相称;希望这将很快改变。现在,找出基于类的视图如何工作的最佳位置是查看它们的混合提供什么。
例如,mixin是and这可能是您在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\u form
基于类的视图在Django中是新的,它们的文档与其他组件不相称;希望这将很快改变。现在,找出基于类的视图如何工作的最佳位置是查看它们的混合提供什么。
例如,mixin是和感谢您的帮助。是的,我注意到基于类的视图缺少文档。这样一个好的解决方案文档不足是非常令人沮丧的。感谢您的帮助。是的,我注意到基于类的视图缺少文档。这样一个好的解决方案是非常令人沮丧的像这样记录不足。