我可以使用本机映射功能将单元列表映射到Jinja模板中的一个元素之一



假设我有一个变量

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>

最新更新