• 序列化


    序列化

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

    a. 两种方式

    #a.serializers:
     
        from django.core import serializers
     
        ret = models.Server.objects.all()
        data = serializers.serialize("json", ret)
     
        return HttpResponse(data)
     
     
        #浏览器反问
        http://127.0.0.1:8000/backend/curd_json.html
        ------------------结果-------------------
        所有的都显示出来
     
    #b. json.dumps
     
        ret = models.Server.objects.values("id","hostname")
        data = json.dumps(list(ret))
     
        return HttpResponse(data)
     
        #浏览器反问
        http://127.0.0.1:8000/backend/curd_json.html
        ----------------结果---------------------
        [{"hostname": "c2.com", "id": 1}] 
    

    b. 由于json.dumps时无法处理datetime日期,所以可以通过自定义处理器来做扩展,如:  

    #每个字段都会验证一遍,都会执行default函数
    
    
    import json
    from datetime import date
    from datetime import datetime
    
    def curd_json(request):
        class JsonCustomEncoder(json.JSONEncoder):
    
            def default(self, value):            #每个字段
    
                if isinstance(value, datetime):
                    return value.strftime('%Y-%m-%d %H:%M:%S')
                elif isinstance(value, date):
                    return value.strftime('%Y-%m-%d')
                else:
                    return json.JSONEncoder.default(self, value)
    
    ret = models.Server.objects.values("id","hostname","create_at")
    data = json.dumps(list(ret),cls=JsonCustomEncoder)            #cls是一个类,默认是json.JSONEncoder类
    
    return HttpResponse(data)
    View Code

      

  • 相关阅读:
    压缩命令
    常用命令7-帮助命令1
    常用命令6--文件搜索命令4-grep
    常用命令5--文件搜索命令3-find
    常用命令4-文件搜索命令 2- which
    【转】Castle开发系列文章
    【摘录】C#多线程编程
    优化一
    Value Shadowing(不明確的方式存取变量)
    portability flaw : file separator (可移植性缺陷:文件分隔符)
  • 原文地址:https://www.cnblogs.com/niejinmei/p/7286830.html
Copyright © 2020-2023  润新知