我正试图找出最简洁的方法来获取我在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)将是许多人所做的事情所以我想我错过了一些东西。
答案 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)