2012-05-12 12 views
1

javascript内の辞書(country_stat)にdjangoテンプレートでアクセスする必要があります。私はこのJavaScriptコードを持っているGoogleのチャートAPIを使用しています。以下のコードはうまく動作し、きちんとした地図を表示します。しかし値は静的です。javascriptでpython辞書にアクセスする

function drawRegionsMap() { 
    var data = google.visualization.arrayToDataTable([ 
    ['Country', 'Popularity'], 
    ['Germany', 2], 
    ['United States', 3], 
    ['Brazil', 4], 
    ['Canada', 5], 
    ['France', 6], 
    ['RU', 7] 
    ]); 

コンテンツブロック内のcountry_statの印刷に成功しました。

{% for key, value in country_stat.items %} 
{{key}}, {{value}} 
{% endfor %} 

版画、

India, 2 Russia, 1 

しかし、私はjavascriptのコードにこれを接続する方法がわかりません。

+0

{{キー}}周りの単一引用符を逃したあなたはJSONとしてあなたにデータを送信するためにはDjangoを使用して検討していますか?そうすれば、あなたはjsコード –

+0

をテンプレートにすることについて心配する必要はありません。より簡単な方法があるはずです。 – John

答えて

5

どちらのAJAXによってデータを要求し、またはテンプレートからJavaScriptの内側にリテラルJSONをダウンウンチ - あなたのビューでコンテキスト変数を設定します。

import simplejson as json 
context['thingy_json'] = json.dumps(thingy) 

は、その後、あなたのテンプレートでその変数を含めます

<script> 
    var data = {{ thingy_json }}; 
</script> 
3

実際に解決しました。

var data = google.visualization.arrayToDataTable([ 
    ['Country', 'Popularity'], 
    {% for key, value in country_stat.items %} 
    ['{{key}}', {{value}}], 
    {% endfor %} 
    ]); 

問題が愚かだった - 私は

+0

javascriptで配列を作成する必要はありません.JavaScriptからJSONをjavascriptに渡すだけです。 – dm03514

+0

あなたの特定のデータセットではうまくいくかもしれませんが、これはしたくありません。データ内の一重引用符は、アプリケーションを破壊します。アンチ・スラッシュは奇妙な振る舞いを引き起こします。このことをきれいに、より少ない労力で行う方法については、アマダンの答えを参照してください。 – spectras