使用 Django 显示 Google 图表

问题描述 投票:0回答:1

我在 Django 中生成了一个变量

data
,格式如下:

data = [['100',10],['90',9],['80',8]]

我已经使用 render_to_response 将其传递给我的模板:

return render_to_response('template.html', {
                                            'data': data,
                                            },
                                            context_instance=RequestContext(request))

在模板标题中,我调用了 Google Charts 来生成折线图:

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('visualization', '1.0', {'packages':['corechart']});
google.setOnLoadCallback(drawChart);
function drawChart() {
  var data = new google.visualization.DataTable();
  data.addColumn('string', 'Number');
  data.addColumn('number', 'Number/10');
  data.addRows( {{ data }} );

var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data, {width: 400, height: 240, title: "Numbers"});
}
</script>

当我这样做时,没有任何显示。如果我从

data
中删除字符串并重试,则会出现图表,但显然没有 x 轴标签。

我还尝试使用 arrayToDataTable 函数添加数据:

var data = google.visualization.arrayToDataTable([
      ['Number', 'Number/10'],
      {% for datum in data %}
          {{ datum }},
      {% endfor %}],
      false);

但这又无法显示任何图表。

关于如何更改上述其中一项,或尝试其他方法来显示 x 轴标签,有什么建议吗?

django django-templates google-visualization
1个回答
12
投票

您必须禁用结果的自动转义。您可以通过添加安全过滤器来做到这一点:

data.addRows( {{ data|safe }} );

{% autoescape off %}
[...]
    {{ data }}
[...]
{% endautoescape %}

我的建议是,如果您可以安装其他软件包,请使用以下包装器之一:

© www.soinside.com 2019 - 2024. All rights reserved.