序列化
序列化
#序列化 #- django内置 #- json + 扩展 #关于Django中的序列化主要应用在将数据库中检索的数据返回给客户端用户,特别的Ajax请求一般返回的为Json格式。
a. 两种方式
#a.serializers:
from django.core import serializers
ret = models.Server.objects.all()
data = serializers.serialize("json", ret)
return HttpResponse(data)
#浏览器反问
http://127.0.0.1:8000/backend/curd_json.html
------------------结果-------------------
所有的都显示出来
#b. json.dumps
ret = models.Server.objects.values("id","hostname")
data = json.dumps(list(ret))
return HttpResponse(data)
#浏览器反问
http://127.0.0.1:8000/backend/curd_json.html
----------------结果---------------------
[{"hostname": "c2.com", "id": 1}]
b. 由于json.dumps时无法处理datetime日期,所以可以通过自定义处理器来做扩展,如:
#每个字段都会验证一遍,都会执行default函数 import json from datetime import date from datetime import datetime def curd_json(request): class JsonCustomEncoder(json.JSONEncoder): def default(self, value): #每个字段 if isinstance(value, datetime): return value.strftime('%Y-%m-%d %H:%M:%S') elif isinstance(value, date): return value.strftime('%Y-%m-%d') else: return json.JSONEncoder.default(self, value) ret = models.Server.objects.values("id","hostname","create_at") data = json.dumps(list(ret),cls=JsonCustomEncoder) #cls是一个类,默认是json.JSONEncoder类 return HttpResponse(data)
浙公网安备 33010602011771号