序列化

关于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) 
posted @ 2019-07-10 08:56  言值  阅读(87)  评论(0编辑  收藏  举报