zoukankan      html  css  js  c++  java
  • Django【进阶】序列化

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

    方案一:serializers
    1
    2
    3
    4
    5
    fromdjango.coreimportserializers
     
    ret=models.BookType.objects.all()
     
    data=serializers.serialize("json", ret)
    方案二:json.dumps(推荐用这种,第一种对连表查询数据不可以)
    1
    2
    3
    4
    5
    6
    7
    8
    importjson
     
    #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日期,所以可以通过自定义处理器做扩展,如下:
    from datetime import datetime
    from datetime import date
    import json
    
    
    class JsonCustomEncoder(json.JSONEncoder):
        def default(self, field):
            if isinstance(field, datetime):
                # 自定义对datetime做处理
                return field.strftime('%Y-%m-%d %H:%M:%S')
            elif isinstance(field, date):
                # 自定义对date做处理
                return field.strftime('%Y-%m-%d')
            else:
                return json.JSONEncoder.default(self, field)
    
    data_list = [
        {'name':'alex','age':19, 'ctime': datetime.now()},
        {'name':'egon','age':19, 'ctime': datetime.now()},
        {'name':'eric','age':19, 'ctime': datetime.now()},
        {'name':'rain','age':19, 'ctime': datetime.now()}
    ]
    
    val = json.dumps(data_list,cls=JsonCustomEncoder)
    print(val)
    

      

     
     



  • 相关阅读:
    09 python初学 (字符串)
    08 python 初学(字典)
    07 Python初学(元组)
    ubuntu 学习
    10 python 初学(Python 的编码解码)
    12 python 初学(深浅拷贝、集合)
    11 python初学 (文件)
    ubuntu 在 Windows 下的安装
    mysql常用命令总结
    关于Windows 7 下临时IPV6地址的问题,如何禁用它
  • 原文地址:https://www.cnblogs.com/lucaq/p/7587108.html
Copyright © 2011-2022 走看看