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),}) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |