Skip to main content
 首页 » 编程设计

python之窗体 View : View didn't return an HttpResponse object

2025年05月04日13dyllove98

我知道这是在 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