视图函数中的序列化

方式一

from django.core import serializers  # 导入模块
res = serializers.serialize('json', hosts_list)
return HttpResponse(res)

方式二

res = hosts_list.values('hostname', 'ip')
import json
res = json.dumps(list(res))  # 注意加上list函数
return HttpResponse(res)

但这种方法不能序列化如时间等数据

方式三

自定义序列化
from datetime import datetime
from datetime import date
import json


# Create your tests here.


class CustomEncoder(json.JSONEncoder):  # 重写自定义序列化的方法
    def default(self, field):
        if isinstance(field, datetime):
            return field.strftime('%Y-%m-%d %H:%M:%S')
        elif isinstance(field, date):
            return field.strftime('%Y-%m-%d')
        else:
            return json.JSONEncoder(self, field)


d = {
    'k1': 'v1',
    'k2': 'v2',
    'datetime': datetime.now(),
}
res = json.dumps(d, cls=CustomEncoder)  # 把重写的序列化方法传入到参数cls
print(res)
posted on 2020-01-15 00:18  Treelight  阅读(185)  评论(0编辑  收藏  举报