2017-04-13 6 views
1

Ich weiß, wir können Jinja Variable auf js Variable wie folgt setzen.Wie setze ich Javascript-Wert auf Jinja Variable

var x = {{ 'value' }} 

aber ich versuche, das Gegenteil zu tun. Ich versuche, Javascript-Wert auf jinja Variable zu setzen. Ich habe Folgendes versucht, aber nichts hat funktioniert.

{{value}} = x 
{% set value = x %} 
{% set value %} x {% endset %} 

x ist JavaScript-Variable.

gibt es einen Weg, dies zu erreichen.

Antwort

4

Dies ist nicht möglich und spiegelt ein tiefes Problem in Ihrem Verständnis der Webanwendungsarchitektur wider. jinja2 ist eine Template-Engine für Python, die auf Ihrem Server läuft. JavaScript, über das Sie sprechen, wird in Ihrem Browser ausgeführt.

Wenn ein Server eine Anforderung empfängt, verarbeitet er eine jinja2-Vorlage, um die Antwort zu erhalten, die er an den Client sendet. Sie können "Jinja Variable nicht auf js Variable setzen", Sie können die Seite so rendern, dass einer JavaScript-Variablen schließlich ein Wert zugewiesen wird, der sich in einer Jinja2-Variablen befindet. I.e. Sie beginnen mit var x = {{ value }} in jinja2 Vorlage; jinja2 verwandelt es während seiner Wiedergabe in var x = 42; Dann wird das gerenderte Ergebnis an den Client gesendet, der es als JavaScript ausführt und einen Wert von 42 an x zuweist. Die Tatsache, dass es hier eine zeitliche Abfolge gibt (Python -> jinja2 -> gerenderte Seitenquelle -> JavaScript) bedeutet, dass Sie nicht tun können, was Sie wollen: Die Variable jinja2 und die JavaScript-Variable existieren nicht gleichzeitig , noch an der gleichen Stelle, und das Zuweisen eines JavaScript-Werts zu einer jinja2-Variablen ist unmöglich.

Um den Wert 42 an Python (und möglicherweise später an jinja2) zu senden, müssten Sie eine Anfrage stellen, die diesen Wert vom Client zum Server sendet: eine Formularübermittlung oder eine AJAX-Anfrage.

Sie könnten eine bessere Antwort erhalten, wenn Sie genau beschreiben würden, was Sie tun möchten, von dem Sie denken, dass Sie "JavaScript-Wert auf jinja Variable setzen" müssen.

Verwandte Themen