jinja模板变量赋值范围

时间:2013-02-06 10:11:24

标签: python scope jinja2

鉴于以下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,我在内部改变了..读取忍者我没有看到关于for循环中的范围,或者如果是和我可以实际使用和更改sep var ...在此示例中行

             {% set sep=',' %} 
执行

并执行以下行

             [PROOF ... 

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

             {{- sep -}} 

再次渲染为空var。我在这里缺少什么/不理解....

1 个答案:

答案 0 :(得分:2)

问题是变量的范围。你圈内的sep变量被认为是另一个变量,而不是你在顶部初始化的变量。

这里提供了相同的问题和一些答案: Can a Jinja variable's scope extend beyond in an inner block?