让我们说我有一个变量
t = [(1, 'hello'), (2, 'world')]
我想要的是在Jinja模板中将它映射到仅包含元组的第二个元素的新列表:
{% set s = t | map(...) | list %}
变量s
应为['hello', 'world']
。
如果不使用自定义过滤器,这可能会以某种方式实现吗?
答案 0 :(得分:0)
根据Jinja文档中的quote,Jinja引擎在python表达式方面受到限制:
...
Jinja2既不允许你输入任意Python代码 模板也不允许所有Python表达式。 运营商是 限于最常见的和更高级的表达,如 不支持列表推导和生成器表达式 。这个 使模板引擎更易于维护和模板更多 可读的。
有人说,你应该在实际的Python代码中进行大部分数据处理,或者你正在使用JS,只需将其作为变量传递并使用JS处理它然后渲染它并尽可能保持模板清洁以便于维护。 / p>
编辑:灵感来自Jinja的文档的解决方案:
可能这可能适合你,我在Jinja's docs找到了:
<ul>
{% for nb, word in t %}
<li><a href="">{{ word }}</a></li>
{% endfor %}
</ul>