加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 使用Django将数据传递到Google Charts

发布时间:2020-12-20 11:32:25 所属栏目:Python 来源:网络整理
导读:这个问题已被提出但没有得到像这样的 one回答. 在我的view.py中我从MySQL中提取数据,例如数组: (Decimal('13'),Decimal('6'),Decimal('13'))(Decimal('207'),Decimal('18'),Decimal('129'))(Decimal('301'),Decimal('38'),Decimal('193'))(Decimal('204'),D
这个问题已被提出但没有得到像这样的 one回答.

在我的view.py中我从MySQL中提取数据,例如数组:

(Decimal('13'),Decimal('6'),Decimal('13'))
(Decimal('207'),Decimal('18'),Decimal('129'))
(Decimal('301'),Decimal('38'),Decimal('193'))
(Decimal('204'),Decimal('32'),Decimal('150'))
(Decimal('159'),Decimal('25'),Decimal('88'))

args = {'array':array}
return render_to_response('page2.html',args)

试图把它放入谷歌图表

function drawChart() {
    var djangoData = JSON.parse('{{ args }}');
    var data = google.visualization.arrayToDataTable(djangoData);

还尝试了var djangoData = {{array}};
两个都没有运气!

EDIT1

建议

return render_to_response('page2.html',{'array': json.dumps(array)})

看起来它会起作用,除了db产生不兼容的类型.有没有办法在不将每个项目转换为int类型的情况下执行此操作.或者,如果有一种pythonic方式转换它?

编辑 – 解决方案

使用选定的答案并向数组添加| safe,所以{{array | safe}}

解决方法

你应该在view.py中尝试这个(不要忘记添加import json):

array = [['X','Y','Z'],[1,2,3],[4,5,6]]
return render_to_response('page2.html',{'array': json.dumps(array)})

然后在模板中使用不带引号的原始值数组:

var djangoData = {{ array|safe }};
var data = google.visualization.arrayToDataTable(djangoData);

编辑:使用自定义JSONEncoder来处理从this question被盗的Decimal类型:

class DecimalEncoder(json.JSONEncoder):
    def default(self,o):
        if isinstance(o,decimal.Decimal):
            return float(o)
        return super(DecimalEncoder,self).default(o)

然后在视图中:

array = [['X',[Decimal('1'),Decimal('2'),Decimal('3')]]
return render_to_response('page2.html',{
    'array': json.dumps(array,cls=DecimalEncoder),})

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读