Я пытаюсь сделать что-то вроде этого:
{% macro obj_type_1 %}
stuff
{% endmacro %}
{% macro obj_type_2 %}
stuff
{% endmacro %}
{{ (obj|get_type)(obj) }}
В этом примере get_type
— это фильтр, возвращающий obj_type_1
или obj_type_2
— т. е. имя макроса для вызова obj
. Я не хочу размечать obj
выводом конфигурации, потому что прямо сейчас obj
используется в нескольких шаблонах в качестве структурных данных, которые должны отображаться с различной разметкой в зависимости от контекста.
Я знаю, что синтаксис здесь немного замучен, но я думаю, это потому, что то, что я хочу сделать, не сразу возможно в шаблонах Jinja. Я пытаюсь заменить большую чертову ерунду if/elif/else в некотором коде генерации конфигурации шаблонами, но этот бит кажется камнем преткновения.