類型一:對於表單數據進行序列化
這時需要用到ErrorDict。
ret['errors'] = obj.errors.as_data() result = json.dumps(ret, cls=JsonCustomEncoder) #JsonCustomEncoder是自定義的cls,用來轉換ret中特殊的error字段類型 return HttpRespon(result)
類型二:對於queryset類型進行序列化
第一種:v的類型是未知的
from django.core import serializers
v = models.tb.objects.all() # 或者 v = models.tb.objects.values('id','name') v=list(v)
data = serializers.serialize("json", v)
第二種:v的類型是已知的,在包含不能序列化的數據,比如time,datetime等類型時,需要自己定義cls
import json
from datetime import date
from datetime import datetime
class JsonCustomEncoder(json.JSONEncoder):
def default(self, field):
if isinstance(field, datetime):
return field.strftime('%Y-%m-%d %H:%M:%S')
elif isinstance(field, date):
return field.strftime('%Y-%m-%d')
else:
return json.JSONEncoder.default(self, field)
v = models.tb.objects.values('id','name','ctime')
v = list(v)
v = json.dumps(v,cls=JsonCustomEncoder)
