序列化
关于Django中的序列化主要应用在将数据库中检索的数据返回给客户端用户,特别的Ajax请求一般返回的为Json格式。
Django 支持的序列化格式
Identifier Information (识别信息)
- xml Serializes to and from a simple XML dialect.
- json Serializes to and from JSON.
- yaml Serializes to YAML (YAML Ain’t a Markup Language). This serializer is only available if PyYAML is installed.
serializers
from django.core import serializers
ret = models.BookType.objects.all()
data = serializers.serialize("序列化格式(如: json)", ret)
参数:
第一个序列化目标格式
第二个是序列化的对象QuerySet
json.dumps
python基本类型的序列化
只要不是关于django对象的序列化,如: 字典、列表、元祖, 就用json.dumps
import json
#ret = models.BookType.objects.all().values('caption')
ret = models.BookType.objects.all().values_list('caption')
ret=list(ret)
result = json.dumps(ret)
由于json.dumps时无法处理datetime日期,所以可以通过自定义处理器来做扩展,如:
import json
from datetime import date
from datetime import datetime
class JsonCustomEncoder(json.JSONEncoder):
def default(self, field):
if isinstance(field, datetime):
return o.strftime('%Y-%m-%d %H:%M:%S')
elif isinstance(field, date):
return o.strftime('%Y-%m-%d')
else:
return json.JSONEncoder.default(self, field)
# ds = json.dumps(d, cls=JsonCustomEncoder)