码迷,mamicode.com
首页 > 其他好文 > 详细

序列化

时间:2017-08-04 20:30:46      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:ret   ajax   cts   enc   显示   ack   encode   instance   htm   

序列化

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

 

  

序列化

标签:ret   ajax   cts   enc   显示   ack   encode   instance   htm   

原文地址:http://www.cnblogs.com/niejinmei/p/7286830.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!