2016-06-19 36 views
1

我试图使用google charts来显示一些数据。如文档所描述的,我把这个代码我templatedjango变量为javascript

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

    function drawChart() { 
    var tmp = document.getElementById('result').value; 
    var data = google.visualization.arrayToDataTable([ 
     ['Year', 'Sales', 'Expenses'], 
     ['2004', 1000,  400], 
     ['2005', 1170,  460], 
     ['2006', 660,  1120], 
     ['2007', 1030,  540]] 
    ); 

    var options = { 
     title: 'Company Performance', 
     curveType: 'function', 
     legend: { position: 'bottom' } 
    }; 

    var chart = new google.visualization.LineChart(document.getElementById('curve_chart')); 

    chart.draw(data, options); 
    } 
</script> 
<div id="curve_chart" style="width: 900px; height: 500px"></div> 

,它工作正常。但我需要通过一些自定义数据,所以我也:

views.py

def home(request): 
    example = [ 
     ['Year', 'Sales', 'Expenses'], 
     ['2004', 1000,  400], 
     ['2005', 1170,  460], 
     ['2006', 660,  1120], 
     ['2007', 1030,  540] 
    ] 
    return render(request, 'home.html', {'example': example}) 

如实例i的数据所使用的相同的数组。接下来,我取代了JavaScript代码阵列{{ example }}

var data = google.visualization.arrayToDataTable({{example}}); 

并没有任何反应。 Google图表不再绘制在我的网页上。
什么即时做错了?此外,我试图在Python代码中使用json.dumps,它并没有为我工作。

回答

1

您应该简单地把你的名单列表变为有效的JSON你将它传递给模板之前:

import json 

def home(request): 
    example = [ 
     ['Year', 'Sales', 'Expenses'], 
     ['2004', 1000,  400], 
     ['2005', 1170,  460], 
     ['2006', 660,  1120], 
     ['2007', 1030,  540] 
    ] 
    example = json.dumps(example) 
    return render(request, 'home.html', {'example': example}) 

确保您使用的safe模板标签:

var data = google.visualization.arrayToDataTable({{example|safe}}); 

是什么当你尝试这样的错误时,你会得到什么错误?

+0

好吧,我也试过了,试图在'javascript'中使用'JSON.parse()'方法,但没有任何结果。那么,关键是过滤器'安全'这就是答案,谢谢! – Mental