• Django序列化


    一、Django序列化

          1、序列化应用场景

             1、关于Django中的序列化主要应用在将数据库中检索的数据返回给客户端用户,由于httpresponse只能返回字符串或者是字节,而从数据库查到的数据是个query.set集合对象,需要将这个集合对象返回给客户端就用到了django序列化了

           2、如果客户端是Ajax请求一般在服务端返回的数据为Json格式,所以也要用到序列化。

         2、序列化方案一:serializers(django内置方法)

            from django.core import serializers

           
           ret = models.BookType.objects.all()
           data = serializers.serialize("json", ret)
         3、序列化方案二:Python自带的json模块
          import json
            #ret = models.BookType.objects.all().values('caption')    #字典的形式
          ret = models.BookType.objects.all().values_list('caption')  #元组的形式,元组内部还是querset对象,所以不能被json所以需要转换成列表后再json
          ret=list(ret)
          result = json.dumps(ret)
        4、方案一和方案二的区别,方案1是吧表名称以及表主键都暴露出来了而且方案1无法跨表查询,但是方案2完美结局了
    二、自定义序列化
      1、由于json.dumps(user_list,cls=json.JSONEncoder)对每个元素进行字符串转换默认是cls下的JSONEncoder的方法所以我们可以自定义一个序列化
      2、代码
    import json 
    from datetime import date 
    from datetime import datetime 
       
    class JsonCustomEncoder(json.JSONEncoder):  #继承json.JSONEncoder
        
        def default(self, field): 
         
            if isinstance(field, datetime):                   #如果是datetime类型就处理成strftime('%Y-%m-%d %H:%M:%S')格式
                return self.strftime('%Y-%m-%d %H:%M:%S') 
            elif isinstance(field, date): 
                return self.strftime('%Y-%m-%d') 
            else: 
                return json.JSONEncoder.default(self, field) 
       
       
    # ds = json.dumps(d, cls=JsonCustomEncoder)  
    
  • 相关阅读:
    【强转】QEMU+GDB调试linux内核全过程
    从上往下打印二叉树
    栈的压入、弹出序列
    包含main函数的栈
    顺时针打印矩阵
    Linux终端美化
    Linux 终端美化
    KDE桌面环境自带的Konsole终端配置
    KDE美化及常用设置
    KDE常用桌面插件总结
  • 原文地址:https://www.cnblogs.com/xuanan/p/7569537.html
Copyright © 2020-2023  润新知