2016-08-20 50 views
0

これはすでに知っている固定変数に十分です。Javascriptスクリプトタグ内に動的なDjangoテンプレート変数を作成する

<script type="text/javascript"> 
    var a = "{{someDjangoVariable}}"; 
</script> 

私は、動的変数を作成したい1つのシナリオを、持っています。 例えば - 私のクエリのdictで

<script type="text/javascript"> 
for (i = 1, bar = bar , textb = ""; i <= bar ; i++) 
    { 
    for (j = 1, category = category , textc = ""; j <= category ; j++) 
    { 
     var a = "{{someDjangoVariable + i + j}}"; 
     // Do some more stuff here in UI - create input field dynamically 
    } 
    } 
</script> 

iは(2 * 2マトリックス構造)このような構造を持っていると言うことができます - {'someDjangoVariable11' : 1, 'someDjangoVariable12' : 23, 'someDjangoVariable21': 256, 'someDjangoVariable22': 31}

動的変数を作成する方法があれば提案してください。

P.S - 行列の列と行は、ユーザー入力によって異なる場合があります。 2 *34 * 31 * 5など

+0

この質問は、テンプレートとJSがどのように動作するか、そしてサーバー側とフロントエンドコードの違いについて根本的に誤解されているようです。 –

+0

@DanielRoseman:質問を編集しましたが、それでも理解できない場合は教えてください。ありがとう!! –

+0

私はその質問を理解しました。私が話していた誤解はあなたのものでした。 –

答えて

0

このアプローチは、クライアント側の変数がサーバーに戻ってきないため機能しません。私は、サーバーから変数の辞書を送り返すことを提案します。

サーバーサイド:

data = {'foo': '1', 'bar': '2'} 
return render('template.html', data) 

クライアント側:

<script> var data = {{data|json|safe}}; </script> 

次に、あなたは、元の辞書のキーとJavaScriptでそれにアクセスすることができます。

+1

また、サーバー側でjson.dumps()を使用してデータを文字列に変換し、そのデータをテンプレート内の "json"フィルタの必要性を排除する文字列として送信することもできます。 –

+0

これにお答えください。私はこの記事ではあまり明確ではなかった。 http://stackoverflow.com/questions/39067756/creating-dynamic-django-template-variables-names-inside-javascript-script-tag –

関連する問題