form_invalid_json()
是一个Django Class-Based-View中的函数,用于返回一个表单验证不通过的Json数据对象。当表单提交出现错误时,该函数会将Json数据返回给前端,展示相应的错误信息。
该函数的使用方法如下:
首先,在你的视图类中需要继承django.views.generic.edit.FormView
类。然后,在你的类视图中新增form_invalid_json()
函数。
form_invalid_json()
方法返回一个包含错误信息的Json对象,在这个对象的字典中,每个键代表了具体的错误,而每个值代表了错误信息。其中,错误的字段名为键,错误信息为值。例如:
from django.views.generic.edit import FormView
from django.http import JsonResponse
from .forms import MyForm
class MyFormView(FormView):
form_class = MyForm
template_name = 'form.html'
def form_invalid_json(self, form):
error_dict = {}
for field in form.errors:
error_dict[field] = form.errors[field]
return JsonResponse(error_dict)
在这个例子中,如果表单出现了错误,form_invalid_json()
函数会把表单的每个错误转化为一个键值对加入到一个字典(error_dict)列表中。然后,返回一个JsonResponse对象,该对象包含了字典中的全部数据。这些数据可以在前端用来呈现校验失败的错误信息。
接下来,还提供一些使用示例:
示例一
在提交表单时,如果一个字段未填写,则在前端页面上显示“该字段不能为空”的错误信息。代码如下:
from django.views.generic.edit import FormView
from django.http import JsonResponse
from .forms import MyForm
class MyFormView(FormView):
form_class = MyForm
template_name = 'form.html'
def form_invalid_json(self, form):
error_dict = {}
for field in form.errors:
error_dict[field] = form.errors[field]
return JsonResponse(error_dict)
在第5行指定表单使用的表单类别。如果表单提交过程中,出现任何校验失败的错误,form_invalid_json()
函数都会将这些错误信息以Json格式返回到前端页面。
示例二
如果表单中的某个字段填的字符长度超过15个,则在前端页面上展示“该字段的长度不能超过15个字符”的错误信息。代码如下:
from django.views.generic.edit import FormView
from django.http import JsonResponse
from .forms import MyForm
class MyFormView(FormView):
form_class = MyForm
template_name = 'form.html'
def form_invalid_json(self, form):
error_dict = {}
for field in form.errors:
error_dict[field] = form.errors[field]
return JsonResponse(error_dict)
在这个例子中,如果表单提交时出现长度超过15个字符的错误,则调用form_invalid_json()
函数并将该错误以Json格式返回到前端页面。这个错误可以是表单类别默认校验错误,也可以是通过给字段设置max_length
属性来自定义的校验错误。