【问题标题】:Getting a django view python dict into highcharts series data将 django 视图 python dict 获取到 highcharts 系列数据中
【发布时间】:2013-06-10 10:02:17
【问题描述】:

我正在尝试找出最简洁的方法来获取我在 django 视图中拥有的 python dict 并将其放入 highcharts 中的饼图系列中。具体来说,当我单击页面上一个图表中的一个点时,我正在尝试加载第二个图表,其中包含该点的详细数据。

例如,我可能有一个柱形图,其中包含“水果”、“肉类”、“蔬菜”的库存。如果我点击一列,第二个图表会显示库存明细。 AKA 第二个“水果”图表将在饼图中显示“苹果”、“橙子”、“香蕉”的库存。

我正在尝试使用 jQuery.get 来执行此操作,因为我不想重新加载整个页面。我的 django 视图将有一个部分用于处理看起来像这样的 ajax:

myData = {}
myData['apples'] = 20
myData['oranges'] = 30
myData['bananas'] = 50

context = Context()
context['fruit'] = myData
return HttpResponse(context)

我想用于饼图的数据格式将 dict 键作为 x,将 dict 值作为 y:

[['apples',20],['oranges',30]…]

我尝试将数据作为字符串从视图传递到脚本,虽然它作为字符串正确地通过线路,但没有按我想要的方式处理,因为我认为值 20、30 等已被处理作为字符串而不是值。我不确定这是否是正确的方法。 我应该通过在 django 模板中呈现上下文来做到这一点吗?如果是这样,在 jQuery/ajax 成功处理程序中会是什么样子?

似乎从 dict 到具有上述格式的 highcharts 系列(将 dict 键作为 x,dict 值作为 y)将是许多人所做的事情,所以我认为我遗漏了一些东西。

【问题讨论】:

    标签: django dictionary highcharts


    【解决方案1】:

    试试这个:

    import json
    from django.http import HttpResponse
    
    myData = {}
    myData['apples'] = 20
    myData['oranges'] = 30
    myData['bananas'] = 50
    
    response_data = {
      'data': myData,
      'message': 'OK',
      'status': 'success'
    }
    
    return HttpResponse(json.dumps(response_data), content_type="application/json")
    

    【讨论】:

    • 感谢您的回答。这真的帮助我得到了我需要的东西。我最终调整了一些东西并使用了 python 列表而不是 dict,因为如果你想将 x 值显示为切片的标签,饼图有点特别,但是在那里获取数据的工作方式与你描述的完全一样。
    • @StephenWang - 谢谢!我在一个类似的问题上苦苦挣扎。如果以 dict(通过 JSON)(highcharts.com/docs/chart-concepts/series#1)的形式发送,Highcharts 似乎无法真正接受系列数据。你同意吗?即使 dict 在我的用例中更有意义,我也必须使用列表(因为这个原因)。
    【解决方案2】:

    如果您使用 django >= 1.7,JsonResponse 将是更好的选择。

    from django.http import JsonResponse
    
    def my_data(request):
        myData = {}
        myData['apples'] = 20
        myData['oranges'] = 30
        myData['bananas'] = 50
        return JsonResponse(myData, safe=False)
    

    【讨论】:

    • +1 表示 >=1.7 的更新。和上面一样的问题。如果以 dict(通过 JSON)(highcharts.com/docs/chart-concepts/series#1)的形式发送,Highcharts 似乎无法真正接受系列数据。你同意吗?即使 dict 在我的用例中更有意义,我也不得不使用列表(因为这个原因)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 2020-01-26
    • 1970-01-01
    相关资源
    最近更新 更多