Django【进阶】序列化
关于Django中的序列化主要应用在将数据库中检索的数据返回给客户端用户,特别的Ajax请求一般返回的为Json格式。
方案一:serializers
|
1
2
3
4
5
|
fromdjango.coreimportserializersret=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)
浙公网安备 33010602011771号