关于Django中的序列化主要应用在将数据库中检索的数据返回给客户端用户,特别的Ajax请求一般返回的为Json格式。
方案一:serializers
1
2
3
4
5
|
from django.core import serializers ret = models.BookType.objects. all () data = serializers.serialize( "json" , ret) |
方案二:json.dumps(推荐用这种,第一种对连表查询数据不可以)
1
2
3
4
5
6
7
8
|
import json #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)