当使用Django中的ORM(对象关系映射)机制进行查询时,常常需要把查询结果转换为json格式数据。这里介绍三种将Django objects的查询结果转化为json的方法。
方法一:使用Django内置的serializers序列化工具
Django自带了一个序列化工具,可以很方便地把 queryset 转化为json数据:
from django.core import serializers
data = serializers.serialize("json", SomeModel.objects.filter(id=1))
‘data’是一个json格式,内容为SomeModel对象的id=1的数据。
方法二:使用Django的JsonResponse方法
另外一种比较方便的方法是使用JsonResponse
方法,这个方法在Django1.7版本中新增加,需要使用该版本或以上版本。下面是这种方法的使用示例:
from django.http import JsonResponse
from django.core import serializers
def json_demo(request):
data = serializers.serialize("json",SomeModel.objects.all())
return JsonResponse({"data": data}, status=200)
方法三:手动转化为json格式
还有一种方法是手动转化为json格式,这里使用Python内置的 json
库来实现:
import json
from django.shortcuts import HttpResponse
from django.core import serializers
def json_demo(request):
data = serializers.serialize("json",SomeModel.objects.all())
result = json.loads(data)
return HttpResponse(json.dumps(result), content_type='application/json')
这里的 loads
方法把查询结果(json字符串)转化为python对象,之后可以对其进行操作,函数中最后的 dumps
方法把python对象重新转化为json字符串,这其实是对之前的json字符串的格式化显示。
以上就是三种方法将Django objects的查询结果转化为json数据的方法,可以根据自己的需求选择适宜的方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django objects的查询结果转化为json的三种方式的方法 - Python技术站