3

鉴于以下 Jinja 片段

        {% set sep='' %}                
        {% for stamp in stamp_list -%}
            {%- for heartbeat in heartbeat_list -%}
                {%- if heartbeat.name == site.name and heartbeat.stamp == stamp.stamp -%}
                    {{- heartbeat.sc_time -}}
                    {{- sep -}}
                    {% set sep=',' %}
                                            [PROOF for new value {{ sep }}]
                {%- endif -%}
            {%- endfor -%}
        {%- endfor %}

看看 sep 变量(分隔符的缩写)我想用逗号分隔 sc_time .. 比如 3.13,2.5,1.33,...

所以我介绍了 var sep,我在内部 if 中进行了更改。阅读 Ninja 我看不到 for 循环内部的范围或 if 和 YES,我实际上可以使用和更改 sep var... 在这个示例中的行

             {% set sep=',' %} 

被执行并且下面的行

             [PROOF ... 

实际上会导致下一次显示,但是

             {{- sep -}} 

只是再次呈现为空变量。我在这里错过/不理解什么....

4

1 回答 1

2

问题是变量的范围。您 for 循环中的sep变量被认为是您在顶部初始化的变量之外的另一个变量。

此处提供了相同的问题和一些答案: Jinja 变量的范围可以扩展到内部块之外吗?

于 2013-09-17T06:48:04.300 回答