视图函数中的序列化

方式一

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)

你可能感兴趣的