form_invalid()
是Django中form表单验证失败时自动调用的函数,用于处理验证失败的情况。其中form_invalid()
的处理逻辑是默认的,如果我们需要自定义它的处理逻辑,则可以在我们的view中重写该方法,用我们自己的处理规则来代替默认的。
form_invalid()
默认会跳转至template_name
页面,将self.get_context_data()
返回的参数传递过去,并将目标form实例保存到context_data
中。如果我们需要自定义跳转页面,重写form_valid()
函数,并在该函数中调用self.render_to_response(form)
方法即可。
下面提供两个实例进行详细讲解:
- 处理验证失败时直接返回json格式的错误信息。
class ExampleView(View):
def post(self, request, *args, **kwargs):
form = ExampleForm(request.POST)
if form.is_valid():
# 如果表单验证通过,则执行下面的代码
pass
else:
# 如果表单验证失败,则执行下面的代码
return JsonResponse({'status': 1, 'message': form.errors})
在这个例子中,我们通过json格式返回了表单验证失败时的错误信息。
- 当表单验证失败时,我们需要加载一个新的页面,并在该页面中展示错误信息。
class ExampleView(FormView):
template_name = 'example.html'
form_class = ExampleForm
def form_invalid(self, form):
return self.render_to_response(self.get_context_data(form=form))
在该例子中,我们通过重写form_invalid()
方法,跳转到了example.html
页面,同时将form实例传递到了模板中,以便在模板中展示错误信息。