我正在使用js
函数从我的django
模型中获取一些数据。具体来说,我想从传感器中获取最后一个值。
我正在执行以下操作,
from django.core import serializers
def getData(request):
ctx = {}
if request.method == 'POST':
select = int(request.POST['Select'])
last_val = DevData.objects.order_by('dev_id','-data_timestamp').distinct('dev_id')
data = serializers.serialize('json', last_val)
print(data)
print('****************')
print(data[0]) # I just obtain a "[" then is a string not a list
ctx = {'Select':data}
return JsonResponse(ctx)
我的问题是,为什么输出是字符串?如何将其转换为Json对象,然后将其传递给我的js
函数?
非常感谢!
您获得一个字符串,因为JSON是一种文本格式。例如,您可以使用json.loads
将其转换回词典列表:
from json import loads as jsonloads
from django.core import serializers
def getData(request):
ctx = {}
if request.method == 'POST':
select = int(request.POST['Select'])
last_val = DevData.objects.order_by('dev_id','-data_timestamp').distinct('dev_id')
data = jsonloads(serializers.serialize('json', last_val))
ctx = {'Select':data}
return JsonResponse(ctx)
Django中的JSON序列化只是一个名为JsonEncoder
的特殊DjangoJSONEncoder
[GitHub],对于DjangoJSONEncoder
对象有一些特殊情况,等等。>