我正在从mysql提取数据以绘制饼图。 我正在使用jinja模板语法的python flask中执行此操作。 我想显示一个饼图。
调试器向我展示了
var data = google.visualization.arrayToDataTable([
['Shock', 'Number'],
{% for record in data %}
['{{record.shockStatus}}', {{record.number}}],
{% endfor %}
我可以在控制台中看到这些值。但是它一直说无效的语法或令牌。如果您能指出我做错了什么,将不胜感激。谢谢。
更新
数据中包含什么。
[{u'number': 7, u'shockStatus': u'absent\r\n'}, {u'number': 7, u'shockStatus': u'present\r\n'}]
答案 0 :(得分:1)
您有两个问题:
tojson
filter生成Javascript兼容语法。在Python中,将data
序列转换为Javascript的正确格式,即,将shockStatus和数字值配对:
# if you have dictionaries
data_transformed = [[r['shockStatus'].strip(), r['number']] for r in data]
# or if you have objects with attributes
data_transformed = [[r.shockStatus.strip(), r.number] for r in data]
我在其中加入了一个str.strip()
呼叫,以从您的shockStatus
值中删除换行符和其他开头或结尾的白人节奏。
将其传递到模板并使用:
var data = google.visualization.arrayToDataTable([
['Shock', 'Number'],
{{ data_transformed|tojson|safe }}
)];