Jinja2 在附加到循环时不打印任何内容

问题描述 投票:0回答:2

在我的烧瓶应用程序中,我正在创建一个列表并附加。当我追加到列表时

None
打印。

{% set keyword_list = [] %}
{% for keyword in keywords_data %}
    {{ keyword_list.append(keyword['keywords_id']) }} //None prints for each iteration
{% endfor %}

{{ keyword_list | join(',') }}
打印
1,2,3
{{ keyword_list }}
打印
[1,2,3]

python-3.x jinja2
2个回答
7
投票

将其更改为

{{ keyword_list.append(keyword['keywords_id']) or "" }}
,它使用
or
的功能返回第一个真实答案。由于 Jinja 中的字符串始终为真,而
None
为假,因此它返回空字符串,不向最终用户输出任何内容。

编辑:@New Coder 询问是否有更简单的方法来做到这一点,确实有!使用

_
作为一次性变量来存储
None
输出,如下所示:
{% set _ = keyword_list.append(keyword['keywords_id']) %}


2
投票

要抑制追加操作的输出,请在步骤中定义一个新的空变量

{%- set keyword_list = [] -%}
{%- for keyword in keywords_data -%}
    {%- _ = keyword_list.append(keyword['keywords_id']) -%}
{%- endfor -%}

我还建议您使用

%- -%
结构以避免不必要的空格。

有关文档中空白控件的更多信息
https://ttl255.com/jinja2-tutorial-part-3-whitespace-control/

© www.soinside.com 2019 - 2024. All rights reserved.