Python json.dumps 自定義序列化操作
阿新 • • 發佈:2019-04-29
from end 定義 login == validator custom 字符 core
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)
Python json.dumps 自定義序列化操作