Ustaw zmienną w jinja

274

Chciałbym wiedzieć, jak ustawić zmienną z inną zmienną w jinja. Wyjaśnię, mam podmenu i chciałbym pokazać, który link jest aktywny. Próbowałem tego:

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

gdzie typ rekordu to zmienna podana dla mojego szablonu.

MyTux
źródło
18
Ludzie lądujący tutaj z Google: prawdopodobnie będziesz przede wszystkim zainteresowany oficjalnymi dokumentami w settagu , a nie konkretnym błędem składniowym popełnionym przez pytającego tutaj lub jak to naprawić, czyli to, na co najczęściej udzielają odpowiedzi tutaj i pod połączonym zduplikowanym adresem .
Mark Amery,
1
@MarkAmery Ty! Szczególnie ta część jinja.palletsprojects.com/en/2.11.x/templates/… jest niezwykle pomocna.
ruohola

Odpowiedzi:

547

{{ }}mówi szablonowi, aby wypisał wartość, to nie zadziała w wyrażeniach, które próbujesz zrobić. Zamiast tego użyj {% set %}tagu template, a następnie przypisz wartość w taki sam sposób, jak w normalnym kodzie Pythona.

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

Wynik:

it worked
Soviut
źródło
2
jeśli moja zmienna to dict what now {% set dict.key = 'test'%} nie działa
Ib33X
Usunięta
Pascal
To było świetne i proste wyjaśnienie. Uwielbiam to :)
Faris Rayhan
czy możemy stworzyć globalną zmienną jinja i używać jej w całym pliku html, w którym osadzimy zmienną jinja? @Soviut
Sri Test
55

Niezłe skróty dla przypisań wielu zmiennych

{% set label_cls, field_cls = "col-md-7", "col-md-3" %}
pymen
źródło
3
To nie wydaje się być bliskie odpowiedzi na pytanie?
John R Perry
1
@JohnRPerry Ale to miły dodatek do zaakceptowanej odpowiedzi.
Spotkaj się z Sinojią
25

Po prostu skonfiguruj to w ten sposób

{% set active_link = recordtype -%}
Chad Pierce
źródło
7
Dlaczego akurat tak (znak minus na końcu, ale nie na początku)? Spowoduje to usunięcie końcowych, ale nie wiodących białych znaków, jeśli się nie mylę. W jakim celu?
Leonid
16
To w oryginalnym pytaniu ¯ \ _ (ツ) _ / ¯
Graham P Heath