Django - HttpResponse 2查询结果为JSON格式 [英] Django - HttpResponse 2 query result in JSON format

查看:275
本文介绍了Django - HttpResponse 2查询结果为JSON格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个来自数据库的查询结果,并尝试以这样的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆