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)
这可能是你想要的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是FormMixin和ProcessFormView