Google图表-无效的语法或意外的令牌

时间:2018-06-22 14:53:08

标签: javascript python flask jinja2

我正在从mysql提取数据以绘制饼图。 我正在使用jinja模板语法的python flask中执行此操作。 我想显示一个饼图。

调试器向我展示了

enter image description here

 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'}]

1 个答案:

答案 0 :(得分:1)

您有两个问题:

  • 您的输入数据已嵌入换行符。您可能想用Python代码在生成数据时进行修复。
  • 您正在插值原始数据,就好像它是JavaScript安全的一样。不要那样做使用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 }}
 )];