我可以使用本机映射函数将元组列表映射到Jinja模板中的元素之一吗?

时间:2018-03-26 09:00:40

标签: python templates jinja2

让我们说我有一个变量

t = [(1, 'hello'), (2, 'world')]

我想要的是在Jinja模板中将它映射到仅包含元组的第二个元素的新列表:

{% set s = t | map(...) | list %}

变量s应为['hello', 'world']

如果不使用自定义过滤器,这可能会以某种方式实现吗?

1 个答案:

答案 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>