Django - HttpResponse 2查询结果为JSON格式 [英] Django - HttpResponse 2 query result in JSON format
本文介绍了Django - HttpResponse 2查询结果为JSON格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
gt_buffer = ev_ground_truth。 object.filter(alg = _alg,exp = _exp,nFrame = _nframe)
dt_buffer = ev_detection.objects.filter(alg = _alg,exp = _exp,nFrame = _nframe)
json_gt_bb = serializers.serialize 'json',gt_buffer)
json_dt_bb = serializers.serialize('json',dt_buffer)
dict_bb_buffer = {'gt':json_gt_bb,'dt':json_dt_bb}
json_bb_buffer = json.dumps (dict_bb_buffer,ensure_ascii = False)
返回HttpResponse(dict_bb_buffer,content_type =application / json)
在前端,
$ .ajax({
url:' / results / get_nframebbs',
data:{
'exp':_ exp,
'alg':_ alg,
'nframe':data [i] ['fields'] .nFrame
},
dataType:'json',
success:funct ion(data){
alert(data.length)
}
});
然而,警报永远不会被调用。但是,如果我只是序列化1个查询结果并返回该警报称为成功与弹出。
gt_buffer = ev_ground_truth.objects.filter (alg = _alg,exp = _exp,nFrame = _nframe)
json_gt_bb = serializers.serialize('json',gt_buffer)
返回HttpResponse(json_gt_bb,content_type =application / json)
我做错了什么? >
解决方案
容易。只需返回2个查询结果作为字符串并在前端解析。
gt_buffer = ev_ground_truth.objects.filter(alg = _alg ,exp = _exp,nFrame = _nframe)
dt_buffer = ev_detection.objects.filter(alg = _alg,exp = _exp,nFrame = _nframe)
json_gt_bb = serializers.serialize('json',gt_buffer)
json_dt_bb = serializers.serialize('json',dt_buffer)
dict_bb_buffer = {'gt':json_gt_bb,'dt':json_dt_bb}
返回JsonResponse(dict_bb_buffer ,status = 201)
并在前端:
dataType:'json',
success:function(data){
gt = JSON.parse(data.gt.substring(1,data.gt.length-1));
dt = JSON.parse(data.dt.substring(1,data.dt.length-1));
}
I have 2 query results from the database and try to return it in json format like this.
gt_buffer = ev_ground_truth.objects.filter(alg=_alg, exp=_exp,nFrame=_nframe)
dt_buffer = ev_detection.objects.filter(alg = _alg, exp=_exp, nFrame=_nframe)
json_gt_bb = serializers.serialize('json', gt_buffer)
json_dt_bb = serializers.serialize('json', dt_buffer)
dict_bb_buffer = {'gt': json_gt_bb, 'dt': json_dt_bb}
json_bb_buffer = json.dumps(dict_bb_buffer, ensure_ascii=False)
return HttpResponse(dict_bb_buffer, content_type = "application/json")
And at the front-end,
$.ajax({
url: '/results/get_nframebbs',
data: {
'exp':_exp,
'alg':_alg,
'nframe':data[i]['fields'].nFrame
},
dataType: 'json',
success: function (data) {
alert(data.length)
}
});
However the alert never be called. But if I just serialize 1 query result and return the alert is called successful with a popup.
gt_buffer = ev_ground_truth.objects.filter(alg=_alg, exp=_exp,nFrame=_nframe)
json_gt_bb = serializers.serialize('json', gt_buffer)
return HttpResponse(json_gt_bb, content_type = "application/json")
What did I do wrong?
解决方案
Easy. Just return 2 query result as string and parse at the front-end.
gt_buffer = ev_ground_truth.objects.filter(alg=_alg, exp=_exp,nFrame=_nframe)
dt_buffer = ev_detection.objects.filter(alg = _alg, exp=_exp, nFrame=_nframe)
json_gt_bb = serializers.serialize('json', gt_buffer)
json_dt_bb = serializers.serialize('json', dt_buffer)
dict_bb_buffer = {'gt': json_gt_bb, 'dt': json_dt_bb}
return JsonResponse(dict_bb_buffer, status = 201)
and at the front-end:
dataType: 'json',
success: function (data) {
gt = JSON.parse(data.gt.substring(1,data.gt.length-1));
dt = JSON.parse(data.dt.substring(1,data.dt.length-1));
}
这篇关于Django - HttpResponse 2查询结果为JSON格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文