0
Iam對Google圖表API很新穎,我試圖將它集成到我的currentn django項目中。基本上,我已經得到了Django模板看起來像下面這樣:谷歌圖表(表格)中的django變量api
<div class="container_24">
<div class="grid_24">
{% if query %}
<p>Results</p>
{% for result in page.object_list %}
<p>
<a href="{{ result.object.get_absolute_url }}">{{ result.object.name }} {{ result.object.salary }} {{ result.object.entry }} {{ result.object.category}}</a>
</p>
{% empty %}
<p>No results found.</p>
{% endfor %}
{% if page.has_previous or page.has_next %}
<div>
{% if page.has_previous %}<a href="?q={{ query }}&page={{ page.previous_page_number }}">{% endif %}« Previous{% if page.has_previous %}</a>{% endif %}
|
{% if page.has_next %}<a href="?q={{ query }}&page={{ page.next_page_number }}">{% endif %}Next »{% if page.has_next %}</a>{% endif %}
</div>
{% endif %}
{% else %}
{# Show some example queries to run, maybe query syntax, something else? #}
{% endif %}
</div>
<div class="fclear"></div>
</div>
<div class="clear"></div>
</div>
</div>
一切都很好,我可以看到我的結果如預期。現在我插入谷歌圖表API如下:
<div class="container_24">
<div class="grid_24">
{% if query %}
<p>Results</p>
{% for result in page.object_list %}
<script type='text/javascript' src='https://www.google.com/jsapi'></script>
<script type='text/javascript'>
google.load('visualization', '1', {packages:['table']});
google.setOnLoadCallback(drawTable);
function drawTable() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Name');
data.addColumn('number', 'Salary');
data.addColumn('boolean', 'Full Time Employee');
data.addRows(4);
data.setCell(0, 0, '{{ result.object.name }}');
data.setCell(0, 1, 10000, '$10,000');
data.setCell(0, 2, true);
data.setCell(1, 0, '{{ result.object.name }}');
data.setCell(1, 1, 8000, '$8,000');
data.setCell(1, 2, false);
data.setCell(2, 0, '{{ result.object.name }}');
data.setCell(2, 1, 12500, '$12,500');
data.setCell(2, 2, true);
data.setCell(3, 0, '{{ result.object.name }}');
data.setCell(3, 1, 7000, '$7,000');
data.setCell(3, 2, true);
var table = new google.visualization.Table(document.getElementById('table_div'));
table.draw(data, {showRowNumber: true});
}
</script>
..
..
..
但是,當我這樣做時,我看到變量result.object.name同名。也就是說,它並沒有循環遍歷這個數組。有沒有辦法做這樣的事情:
data.setCell(0:20,0)='{{result.object.name}}'
其中0:20會代表表/行的行嗎?
謝謝你的時間。
它是一個恥辱,Django模板標籤將傾向於JS類型注入。你能詳細解釋一下嗎?這是寫在/討論任何地方?感謝圖表類型工具的其他鏈接。我會看看 - 它的可惜,谷歌圖表API實際上很酷。 – AJW 2012-02-14 07:05:35
對不起,也許我不是很清楚:Django不是問題。問題在於,您永遠無法信任用戶輸入的數據,並且您希望接受要在圖表中動態插入的數據,除非安全地逃脫,否則該方法將非常危險。 – Nemoverflow 2012-02-14 08:03:30
嗨,尼莫..感謝這一點。我不能使用其中一種「安全」方法嗎?類似於:{{your.variable | safe}}?這是不是夠好?非常感謝。 – AJW 2012-02-14 19:05:12