假设我有一个变量
t = [(1, 'hello'), (2, 'world')]
我想要的是将其映射到仅包含元组的第二个元素的新列表中,在Jinja模板中:
{% set s = t | map(...) | list %}
变量s
应为['hello', 'world']
。
这是可以在某种程度上不使用自定义过滤器的吗?
是的,这是attribute
方法:
{% set t = [(1, 'hello'), (2, 'world')] %}
{% set t1 = t|map(attribute=1)|list %}
{{ t1 }}
jinja Engine在python表达式方面受到限制,根据Jinja文档的下文报价:
...
jinja2也不允许您将任意Python代码放入 模板也不允许所有Python表达式。操作员是 仅限于最常见的表达方式,例如 列表综合和生成器表达式不支持。这 使模板引擎更易于维护和模板更多 可读。
也就是说,您应该在实际的Python代码中进行大多数数据处理,或者您使用JS,只需将其作为变量将其传递并使用JS处理,然后将其渲染,然后将模板尽可能清洁,以便于维护。/p>
编辑:从Jinja的文档启发的解决方案:
可能,这可能对您有用,我在Jinja的文档上找到了:
<ul>
{% for nb, word in t %}
<li><a href="">{{ word }}</a></li>
{% endfor %}
</ul>