【发布时间】:2012-05-17 04:30:32
【问题描述】:
我正在尝试做这样的事情:
{% 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 废话,但这似乎是一个症结所在。
【问题讨论】:
-
所以你基本上是在寻找一种在 Jinja2 中
eval()的方法? -
接近;我想按名称调用宏。