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

标签 python django django-generic-views

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

关于python - 窗体 View : View didn't return an HttpResponse object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10827696/

相关文章:

python - Keras/Theano - 如何在 Lambda 层中乘以向量

python - 从 RadioSelect 中删除空白 "---------"

python - i(1054, "Unknown column ' rango_category.slug' in 'field list' ") Django

Django : Can I use CreateView and DeleteView in same form?

django - 如何将数据添加到 DetailView 中的上下文对象?

python - 在heroku上使用带有django的站点地图包

python - 使用 sqlalchemy 进行连接压缩

python - 合并cloud yaml AWS云形成模板

python - 从 Django QuerySet 获取 SQL

python - 如何统计与ListView中显示的项目相关的对象?