视图函数中的序列化

本小妞迷上赌 提交于 2020-01-15 00:40:42

方式一

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)
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!