FormView:View没有返回HttpResponse对象

Bry*_*zer 1 python django django-generic-views

我知道当视图的代码路径没有返回时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')
Run Code Online (Sandbox Code Playgroud)

Bur*_*lid 5

这可能是你想要的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)
Run Code Online (Sandbox Code Playgroud)

如果你没有做任何事情post,你不应该有一个方法来覆盖它.同样,您不需要覆盖get_form.

基于类的视图是django中的新视图,它们的文档与其他组件不相符; 希望这会很快改变.目前,了解基于类的视图如何工作的最佳位置是查看其mixins提供的内容.

因为FormView,mixins是FormMixinProcessFormView