2017-04-11 7 views
0

ユーザーがボタンをクリックしたときに、JavaScriptを使用して1から132までの乱数を生成しようとしています。javascript変数をdjangoで使用する方法、またはその逆の方法は?

これまでのところ、値が生成され、目的の出力を得ることができました。

問題: 私はカスタムDjangoフィルタ(またはそれが呼び出されたもの)で生成された値を使用しました。私は私のコードとのより良いそれを説明してみましょう:

<div id="b005" class="modal"> 
    <div id="rand1"></div> 
    <div id="rand2"></div> 
     {%for i in allb %} 
     {%if i.id == **WANT TO USE THE JS VARIABLE HERE**|add:0 %} 
      <p>{{ i.name }}</p> 
     {% endif %} 
     {%endfor%} 
    </div> 

注:allbを、私は私のviews.py

から経過しているオブジェクトです

<script type="text/javascript"> 
    function random_generator() 
    { 
     var rand = []; 
     var i; 
     var j; 
     var text = ""; 
     for(i = 0; i < 5; ++i) 
     { 
     rand[i] = Math.floor((Math.random() * 132) + 1); 
     text += rand[i]; 
     } 
     document.getElementById('rand1').innerHTML = text; //Just trying to see if the numbers are generated properly 

     var text2 = "{%for i in allb %}{%if i.id == " + text + "|add:0 %}<p>{{ i.name }}</p>{% endif %}{%endfor%}"; 
     document.getElementById('rand2').innerHTML = text2; 
     document.writeln(rand[0]); 
    } 
    </script> 

は、ここで私はやってはみました他に何です

同じことをする他の方法はありますか?

は、事前にありがとう:)

+2

この質問は、フロントエンドとバックエンドのコードの違いについての基本的な誤解に基づいています。 –

答えて

0

をダニエルは、既に述べたように、あなたは最初の舞台裏で何が起こっているかを理解する必要があります。あなたのdjangoテンプレートはあなたのサーバ上にのみ存在し、すべてのテンプレートコードはそのサーバ上で実行されます。このテンプレートコードは、random_generator()スクリプトで行っているように、非HTMLレンダリングにも使用できます。

しかし、ブラウザは評価版のテンプレートのみを受け取ります。したがって、あなたのdjangoテンプレートコード(サーバー側)をクライアント側のjと比較することは不可能です。

関連する問題