【问题标题】:Django - HttpResponse 2 query result in JSON formatDjango - JSON 格式的 HttpResponse 2 查询结果
【发布时间】:2017-03-09 02:23:31
【问题描述】:

我有 2 个来自数据库的查询结果,并尝试以这样的 json 格式返回。

    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")

在前端,

    $.ajax({
      url: '/results/get_nframebbs',
      data: {
        'exp':_exp,
        'alg':_alg,
        'nframe':data[i]['fields'].nFrame
       },
       dataType: 'json',
       success: function (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)



        return HttpResponse(json_gt_bb, content_type = "application/json")

我做错了什么?

【问题讨论】:

  • 你在使用 DRF 吗?(Django Rest 框架?)
  • 我不知道那是什么。我不这么认为。
  • @Beomi 你有什么想法吗?

标签: json django


【解决方案1】:

您的成功函数中有响应作为参数,而不是直接的 json 数据。您可以像这样访问您的数据:

success: function (response) {
      var gt = response.responseJSON.gt;
}

【讨论】:

  • 这不起作用。它永远不会进入成功功能。
【解决方案2】:

简单。只需将 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}


    return JsonResponse(dict_bb_buffer, status = 201)

在前端:

数据类型:'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));
            }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多