def login_ajax(request): if request.method == "GET": return render(request, 'login_ajax.html') elif request.method == "POST": ret = {'status': True, 'error':None, 'data': None} obj = LoginForm(request.POST) if obj.is_valid(): print(obj.clean()) else: # 方式一 # res_str = obj.errors.as_json() # res_str是一个字符串 # ret['status'] = False # ret['error'] = res_str # 两次反序列化 # 方式二: ret['status'] = False ret['error'] = obj.errors.as_data() # # {'user': [ValidationError(['用户名长度不能小6'])], 'email': [ValidationError(['邮箱格式错误'])]} # # 一次反序列化 return HttpResponse(json.dumps(ret,cls=JsonCustomEncoder)) from django.core.validators import ValidationError class JsonCustomEncoder(json.JSONEncoder): def default(self, field): if isinstance(field, ValidationError): return {'code': field.code, 'message': field.message} else: return json.JSONEncoder.default(self, field)