Django用JsonResponse或者HttpResponse来返回JSON

如果用HttpResponse一般这样用是正确的(记得要指明content_type="application/json"):

import json
from django.core import serializers
json_data = serializers.serialize('json', goods)
from django.http import HttpResponse
return HttpResponse(json_data, content_type="application/json")

下面这样写就可能出现有些类型序列化不了:

import json
from django.http import HttpResponse
return HttpResponse(json.dumps(json_list), content_type="application/json")

这是因为这个json.dumps不能序列化datetime这样类型的数据,所以才会用第一种那种serializers.serialize()来对其进行序列化。

当然json.loads就是serializers.serialize()它的逆操作了,逆回来再用json.dumps()也就没问题了。

 

JsonResponse做的工作也就是加上了dumps和content_type,要这样用(转过去再转回来,因为自带dumps没办法):

import json
from django.core import serializers
json_data = serializers.serialize('json', goods)
json_data = json.loads(json_data)
from django.http import JsonResponse
return JsonResponse(json_data, safe=False)

 

posted @ 2019-01-15 13:48  LauZyHou  阅读(3615)  评论(0编辑  收藏  举报