获取django视图python dict到highcharts系列数据

时间:2013-06-13 20:53:17

标签: django dictionary highcharts

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

例如,我可能有一个包含'fruit','meat','vegetables'库存的柱形图。如果我单击某列,则第二个图表会显示库存明细。 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)将是许多人所做的事情所以我想我错过了一些东西。

2 个答案:

答案 0 :(得分:2)

试试这个:

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

答案 1 :(得分:1)

如果您使用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)