2013-07-18 114 views
2

我想要讓谷歌圖表顯示在我的頁面上,但我無法確定如何將django視圖的值傳遞給javascript,因此我可以繪製圖表。Django與谷歌圖表

的Django代碼:

array = ([ 
     ['Year', 'Sales', 'Expenses'], 
     ['2004', 1000,  400], 
     ['2005', 1170,  460], 
     ['2006', 660,  1120], 
     ['2007', 1030,  540] 
    ]); 
args['array']= array 
return render_to_response('progress.html',args) 

progres.html:

<script type="text/javascript" src="https://www.google.com/jsapi"></script> 
<script type="text/javascript"> 
    google.load("visualization", "1", {packages:["corechart"]}); 
    google.setOnLoadCallback(drawChart); 
    function drawChart() { 
    var djangoData = '{{array}}'; 
    var data = google.visualization.arrayToDataTable(djangoData); 

    var options = { 
     title: 'Company Performance' 
    }; 

    var chart = new google.visualization.LineChart(document.getElementById('chart_div')); 
    chart.draw(data, options); 
    } 
</script> 

這樣,圖表不會被顯示出來。有什麼建議麼 ?

回答

1

google.visualization.arrayToDataTable()似乎需要一個2D(javascript)數組。你傳遞的是一個字符串。你需要把它解析成一個數組。嘗試:

var djangoData = JSON.parse('{{ array }}'); 
var data = google.visualization.arrayToDataTable(djangoData); 
0

在你視圖

刪除此行args['array']= array

改變這一行return render_to_response('progress.html',args)return render_to_response('progress.html',{'array': json.dumps(array)})

在你模板

改變這一行var djangoData = '{{array}}';var djangoData = '{{ array | safe }}';

你的代碼的其餘部分是好的。我希望這有幫助。