Jinja2 – Опциональный блок

Шаблонизатор JinjaСобственно, возник вопрос - можно ли в Jinja2 реализовать опциональный блок. Например:

{% if condition %}
    {% block block_name %}
        ...
    {% endblock %}
{% endif %}

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

Аналогичный топик был найден на Stack Overflow.

Решение выглядит так:

{% block block_name %}
    {% if condition %}
         ...
    {% else %}
        {{ super() }}
    {% endif %}
{% endblock %}

В целом, если возникает подобная ситуация - это может означать неправильную структуру шаблонов. Вероятно, её необходимо пересмотреть, чтобы такой ситуации попросту не возникало.

Поделитесь с друзьями:



Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>