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

Django-序列化

时间:2017-09-24 15:22:56      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:coder   syntax   ack   important   space   rda   elf   查询   bit   

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

方案一:serializers
1
2
3
4
5
fromdjango.coreimportserializers
 
ret=models.BookType.objects.all()
 
data=serializers.serialize("json", ret)
方案二:json.dumps(推荐用这种,第一种对连表查询数据不可以)
1
2
3
4
5
6
7
8
importjson
 
#ret = models.BookType.objects.all().values(‘caption‘)
ret=models.BookType.objects.all().values_list(‘caption‘)
 
ret=list(ret)
 
result=json.dumps(ret)
但是:
json.dumps无法处理datetime日期,所以可以通过自定义处理器做扩展,如下:
from datetime import datetime
from datetime import date
import json


class JsonCustomEncoder(json.JSONEncoder):
    def default(self, field):
        if isinstance(field, datetime):
            # 自定义对datetime做处理
            return field.strftime(‘%Y-%m-%d %H:%M:%S‘)
        elif isinstance(field, date):
            # 自定义对date做处理
            return field.strftime(‘%Y-%m-%d‘)
        else:
            return json.JSONEncoder.default(self, field)

data_list = [
    {‘name‘:‘alex‘,‘age‘:19, ‘ctime‘: datetime.now()},
    {‘name‘:‘egon‘,‘age‘:19, ‘ctime‘: datetime.now()},
    {‘name‘:‘eric‘,‘age‘:19, ‘ctime‘: datetime.now()},
    {‘name‘:‘rain‘,‘age‘:19, ‘ctime‘: datetime.now()}
]

val = json.dumps(data_list,cls=JsonCustomEncoder)
print(val)

  

 
 



Django-序列化

标签:coder   syntax   ack   important   space   rda   elf   查询   bit   

原文地址:http://www.cnblogs.com/lucaq/p/7587108.html

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