编程语言
首页 > 编程语言> > javascript-Django数据到Google图表

javascript-Django数据到Google图表

作者:互联网

视图:

def home(request,
    template = 'home.html'):
    if request.user.is_authenticated():
        data = [['jan'],[12],[-12]]

    context = {
        'data' : data,
    }
    return render(
        request, template, context)

模板:

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current', {packages: ['corechart', 'bar']});
google.charts.setOnLoadCallback(drawVisualization);

function drawVisualization() {


  var data = new google.visualization.DataTable();
  data.addColumn('string', 'Month');
  data.addColumn('number');
  data.addColumn('number');

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

  // Create and draw the visualization.
  new google.visualization.ColumnChart(document.getElementById('visualization')).
      draw(data,
           {title: "blabla",
            width:600, height:400,
            bar: { groupWidth: '90%' },
            isStacked:"true",
            legend:"none" }
      );

}
</script>

我正在尝试将数组值获取到图表行,但不明白为什么这行不通.没有绘制图形,但是其他所有内容都可以工作.

总体目标是将模型字段存储在数组中,然后使用它来绘制图表,如果无法执行此操作,那么将无法继续进行操作.

当我在模板中调用{{data}}时,它返回:

[[0], [12], [-12]]

这是错误的格式吗?如何更改此设置,使Google图表能够将其接受为行值?

任何帮助或指示,将不胜感激,

提前致谢

解决方法:

根据代码中的数据表定义,共有三列…

var data = new google.visualization.DataTable();
data.addColumn('string', 'Month');
data.addColumn('number');
data.addColumn('number');

但是通过阅读问题,听起来您只需要两个…

var data = new google.visualization.DataTable();
data.addColumn('string', 'Month');
data.addColumn('number');

并添加一行值,格式应为…

['Month', 0]

要使用addRows添加所有行,格式应为…

[
  ['Month',   0],
  ['Month',  12],
  ['Month', -12]
]

在您的视图上下文中,将“ data”:data更改为“ data”:json.dumps(data)

在javascript或视图中使用json至关重要.

标签:charts,google-visualization,javascript,django
来源: https://codeday.me/bug/20191118/2025861.html