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.


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

2
jeśli moja zmienna to dict what now {% set dict.key = 'test'%} nie działa
Ib33X


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" %}

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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.