zoukankan      html  css  js  c++  java
  • 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)  
    
  • 相关阅读:
    win7台式机上使用airpods
    通达信自定义版面设置
    pthread_cond_wait函数实现
    为什么卸载手机微软必应浏览器
    看电子书的好处
    Web前端学习方法
    用Bing搜索单词的时候按下Ctrl键不放可以持续发音
    怎么制作档案盒标签
    三个按钮指向一个Click事件的错误
    What is .NET
  • 原文地址:https://www.cnblogs.com/xuanan/p/7569537.html
Copyright © 2011-2022 走看看