Variable in jinja setzen

263

Ich würde gerne wissen, wie ich eine Variable mit einer anderen Variablen in jinja setzen kann. Ich werde erklären, ich habe ein Untermenü und ich möchte zeigen, welcher Link aktiv ist. Ich habe es versucht:

{% set active_link = {{recordtype}} -%}

Dabei ist recordtype eine Variable, die für meine Vorlage angegeben wurde.

MyTux
quelle
14
Leute, die hier von Google landen: Sie werden wahrscheinlich in erster Linie an den offiziellen Dokumenten auf dem setTag interessiert sein , anstatt an dem spezifischen Syntaxfehler, den der Fragesteller hier gemacht hat, oder daran, wie er behoben werden kann .
Mark Amery
1
@ MarkAmery Ty! Besonders dieser Teil jinja.palletsprojects.com/de/2.11.x/templates/… ist äußerst hilfreich.
Ruohola

Antworten:

533

{{ }}Weist die Vorlage an , den Wert zu drucken . Dies funktioniert nicht in Ausdrücken, wie Sie es versuchen. Verwenden Sie stattdessen das {% set %}Template-Tag und weisen Sie den Wert wie im normalen Python-Code zu.

{% set testing = 'it worked' %}
{% set another = testing %}
{{ another }}

Ergebnis:

it worked
Soviut
quelle
2
Wenn meine Variable dikt ist, was jetzt {% set dict.key = 'test'%} nicht funktioniert
Ib33X
Eine gelöschte Antwort enthielt auch diesen Link, der als ergänzende Information zu dieser Antwort dient: jinja.pocoo.org/docs/tricks/#highlighting-active-menu-items
Pascal
Es war eine großartige und einfache Erklärung.
Ich
Können wir eine globale Jinja-Variable erstellen und in der gesamten HTML-Datei verwenden, in die wir die Jinja-Variable einbetten? @Soviut
Sri Test
50

Schöne Abkürzung für mehrere Variablenzuweisungen

{% set label_cls, field_cls = "col-md-7", "col-md-3" %}
Pymen
quelle
3
Dies scheint der Beantwortung der Frage nicht nahe zu kommen?
John R Perry
25

Richten Sie es einfach so ein

{% set active_link = recordtype -%}
Chad Pierce
quelle
7
Warum speziell so (das Minuszeichen am Ende, aber nicht am Anfang)? Dies würde nachfolgende, aber nicht führende Leerzeichen entfernen, wenn ich mich nicht irre. Zu welchem ​​Ende?
Leonid
14
Es ist in der ursprünglichen Frage ¯ \ _ (ツ) _ / ¯
Graham P Heath