zoukankan      html  css  js  c++  java
  • 序列化

    序列化

    #序列化
       #- 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

      

     

      

     

  • 相关阅读:
    /tmp 和 /var/tmp 的区别
    PostgreSQL AS不忽略大小写
    PostgreSQL 命令
    DB Stack Overflow
    组合唯一约束
    python3学习笔记(9)_closure
    python3学习笔记(8)_sorted
    python3学习笔记(7)_listComprehensions-列表生成式
    python3学习笔记(6)_iteration
    python3学习笔记(5)_slice
  • 原文地址:https://www.cnblogs.com/golangav/p/7271917.html
Copyright © 2011-2022 走看看