我这样做
form_invalid。这是我的方法:
from django.views.generic import FormViewclass ContextFormView(FormView): def get(self, request, *args, **kwargs): form_class = self.get_form_class() form = self.get_form(form_class) context = self.get_context_data(**kwargs) context['form'] = form return self.render_to_response(context) def post(self, request, *args, **kwargs): form_class = self.get_form_class() form = self.get_form(form_class) if form.is_valid(): return self.form_valid(form) else: return self.form_invalid(form, **kwargs) def form_invalid(self, form, **kwargs): context = self.get_context_data(**kwargs) context['form'] = form return self.render_to_response(context)
你可以执行相同的操作,但要使用
form_valid。通常,
form_valid的主体如下所示:
def form_valid(self, form): return HttpResponseRedirect(self.get_success_url())
你将不得不覆盖
post和
form_valid,因为
post调用
form_valid。
def post(self, request, *args, **kwargs): form_class = self.get_form_class() form = self.get_form(form_class) if form.is_valid(): return self.form_valid(form, **kwargs) else: return self.form_invalid(form, **kwargs)def form_valid(self, form, **kwargs): # take some other action here return HttpResponseRedirect(self.get_success_url())
只是为了澄清一下,存在此问题的原因是
ProcessFormView该类的
get方法已损坏。通常看起来像这样:
def get(self, request, *args, **kwargs): form_class = self.get_form_class() form = self.get_form(form_class) return self.render_to_response(self.get_context_data(form=form))
它只是把垃圾扔掉了
(._.)



