Django 之 序列化

假如想象 提交于 2020-11-09 01:01:11

Django之序列化

关于Django中的序列化主要应用在将数据库中检索的数据返回给客户端用户,特别的Ajax请求一般返回的为Json格式。

serializers

1
2
3
4
5
from  django.core  import  serializers
  
ret  =  models.BookType.objects. all ()
  
data  =  serializers.serialize( "json" , ret)

json.dumps

1
2
3
4
5
6
7
8
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

d=datetime.now()

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)


ds = json.dumps(d, cls=JsonCustomEncoder)

print(ds)
print(type(ds))



'''
Supports the following objects and types by default:

    +-------------------+---------------+
    | Python            | JSON          |
    +===================+===============+
    | dict              | object        |
    +-------------------+---------------+
    | list, tuple       | array         |
    +-------------------+---------------+
    | str               | string        |
    +-------------------+---------------+
    | int, float        | number        |
    +-------------------+---------------+
    | True              | true          |
    +-------------------+---------------+
    | False             | false         |
    +-------------------+---------------+
    | None              | null          |
    +-------------------+---------------+

'''

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!