Jinja2 с использованием переменных {% include ‘XXXXX’ %}

#django #jinja2

#джанго #джинджа2

Вопрос:

Я не знаю, как это объяснить. На работе мы не проходили никакой подготовки по этому вопросу, и поставщик немного дерьмовый. Нам сказали, что мы используем Jinja2. Мы можем создать то, что мы называем «блоком» в коде Jinja, используя уже существующие переменные. Как только мы создали эти блоки из кода Jinja2, мы можем ссылаться на них с include помощью инструкции.

В моем случае эта переменная, которую я создал, является датой. Я хочу создать новый блок, используя и форматируя эту переменную. Как я мог бы использовать приведенное ниже в другом заявлении?

{% include 'eme_sa_post_booking_personalisation_startdate_formatted' %}

Это вернет 15/01/2022, например

основываясь на существующих критериях, которые я могу использовать, я хочу отформатировать эту дату из инструкции include по определенным языкам.

итак, давайте скажем :

 {%- if **-included variable-** and contact.language in ('EN','FR','IE','SP','IT','FI') -%}  {{ **-include variable-**|format_date('dd/MM/yyyy') }}{#-EN,FR,IE,SP,IT,FI have their date as 01.12.1900-#}  {%- elif **-included variable-** and contact.language == 'HG' -%}  {{ **-included variable-**|format_date('yyyy.MM.dd.') }}{#-HG have their date as 1900.12.01. -#}  {%- elif **-included variable-** and contact.language == 'SW' -%}  {{ **-included variable-**|format_date('dd.MM.yyyy') }}{#-SW have their date as 01.01.1900-#}  {%- elif **-included variable-** and contact.language == 'GR' -%}  {{ **-included variable-**|format_date('dd.MM.yyyy') }}{#-GR have their date as 01.01.1900-#}  {%- else -%}  {{ **-included variable-**|format_date('dd/MM/yyyy') }}{#-for all other languages we`ll use 01/12/1900-#}  {%- endif %}  

Спасибо

Комментарии:

1. Разве вы не могли бы просто вызвать переменную? Нравится {{ eme_sa_post_booking_personalisation_startdate_formatted |format_date('dd/MM/yyyy') }}

2. Я не совсем понимаю, что вы здесь имеете в виду. include тег, будь то jinja2 / Django, буквально включает другой шаблон в текущий, он не включает переменную, как, кажется, предполагает то, что вы говорите. Также, если ваш вопрос касается форматирования даты, вам даже не нужно спрашивать / говорить об include этом . Также, пожалуйста, правильно отметьте свой вопрос, это касается языка шаблонов Django или jinja2?

3. к сожалению, это не работает. Мне нужно было бы либо что-то назвать этим оператором include в моем заявлении if, либо указать его как xxxxx.eme_sa_post… иначе это не сработает:(

4. новая переменная, которую я создал с помощью jinja 2 под названием «eme_sa_post….», была создана в приложении, которое мы используем, под названием «Данные Саймона» в месте под названием «блоки». Все, что я хочу сделать, это сослаться на эту новую переменную в новом фрагменте блока jinja, чтобы создать новый блок. Просто используя имя типа «eme_sa_post…» Я не узнаю это в своем выражении, так как у меня должно быть что-то вроде contact.eme_sa_post… я предполагал, что единственным способом сделать это будет оператор include, который затем отобразит мой результат, но этого недостаточно, так как мне нужно отформатировать его с использованием других критериев