Flask ChartJS不显示Jinja变量提供的标签

Flask ChartJS不显示Jinja变量提供的标签,flask,chart.js,jinja2,Flask,Chart.js,Jinja2,我想使用Flask来呈现ChartJS图形。这是我的路线 @app.route("/graph") def graph(): d = Eval.query.all() labels = [i.date.strftime('%d.%m.%Y') for i in d] data = [i.bw for i in d] return render_template('chart.html', title='Charts', labels = labels, data

我想使用Flask来呈现ChartJS图形。这是我的路线

@app.route("/graph")
def graph():
    d = Eval.query.all()
    labels = [i.date.strftime('%d.%m.%Y') for i in d]
    data = [i.bw for i in d]
    return render_template('chart.html', title='Charts', labels = labels, data = data) 
我在chart.html中有以下代码:

{% extends "base.html" %}
{% block content %}

<canvas id="myChart" height="400" width="800"></canvas>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.4.0/Chart.min.js"></script>

<script type="text/javascript">
var ctx = document.getElementById('myChart').getContext('2d');
var chart = new Chart(ctx, {
  type: 'line',
  data: {
  labels: ['16.07.2017', '23.07.2017', '30.07.2017', '06.08.2017', '13.08.2017'],
  datasets: [{
      label: "My First dataset",
      backgroundColor: 'rgb(255, 99, 132)',
      borderColor: 'rgb(255, 99, 132)',
      data: {{ data }} 
   }]
  },
  options: {
    responsive:false
   }
});
</script>

{% endblock %}
这张图表根本没有渲染

我检查以确保{{labels}}表达式确实也是一个格式正确的列表。在脚本标记上方调用{{labels}}将在html页面中显示以下输出:

['16.07.2017', '23.07.2017', '30.07.2017', '06.08.2017', '13.08.2017']

我在脚本中添加了Jinja表达式作为变量,现在图表按预期呈现。还是不知道为什么

如果未使用
safe
过滤器,则在模板解析过程中将转义特殊符号,并损坏变量值

在上述情况下,不带“jinja-safe”过滤器的最终变量值为

["16.07.2017", "23.07.2017"] =>[&#39;16.07.2017&#39;,&#39;23.07.2017&#39;]
该值(
[';16.07.2017';,';23.07.2017';]
)对于JS是非法的,您可以在浏览器控制台中看到错误:

Uncaught SyntaxError: Unexpected token &
在上述情况下,“jinja-safe”过滤器的最终变量值将是相同的

["16.07.2017", "23.07.2017"] =>["16.07.2017", "23.07.2017"]

Uncaught SyntaxError: Unexpected token &
["16.07.2017", "23.07.2017"] =>["16.07.2017", "23.07.2017"]