1. 程式人生 > >Python json.dumps 自定義序列化操作

Python json.dumps 自定義序列化操作

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 自定義序列化操作