2017-04-11 4 views
0

Ich versuche, Zufallszahlen zwischen 1 bis einschließlich 132 mit JavaScript zu erzeugen, wenn ein Benutzer auf eine Schaltfläche klickt.Wie verwendet man Javascript-Variablen mit Django oder umgekehrt?

So weit so gut, es generiert den Wert und ich bin in der Lage, die gewünschte Ausgabe zu erhalten.

Das Problem: Ich sollte den generierten Wert in einem benutzerdefinierten Django-Filter (oder was auch immer es genannt wird) verwenden. Lassen Sie es mich erklären, besser mit meinem Code:

<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> 

Hier ist, was sonst habe ich versucht zu tun:

<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> 

Hinweis:allb ist ein Objekt, das ich von meinem views.py bestanden haben

Gibt es einen anderen Weg, das Gleiche zu tun?

Vielen Dank im Voraus :)

+2

Diese Frage basiert auf einem grundlegenden Missverständnis des Unterschieds zwischen Frontend und Backend-Code. –

Antwort

0

Wie Daniel bereits erwähnt, müssen Sie zuerst verstehen, was hinter den Kulissen vor sich geht. Ihre Django-Vorlagen sind nur auf Ihrem Server vorhanden und der gesamte Vorlagencode wird auf diesem Server ausgeführt. Dieser Vorlagencode kann auch für das Nicht-HTML-Rendering verwendet werden, wie Sie es in Ihrem random_generator() -Skript tun.

Aber der Browser erhält nur eine ausgewertete Version der Vorlagen. Es ist also unmöglich, Ihren Django-Template-Code (serverseitig) mit Ihrer clientseitigen js zu vergleichen.

Verwandte Themen