python - jinja 模板变量赋值范围

标签 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,我在内部 if..行

             {% set sep=',' %} 

被执行,下面一行

             [PROOF ... 

实际结果显示,但是,下一次

             {{- sep -}} 

只是再次呈现为一个空变量。我在这里想念/不理解什么....

最佳答案

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

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

关于python - jinja 模板变量赋值范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14726396/

相关文章:

Python 列表更新自身

variables - Lua 函数选择局部变量而不是全局变量

python - 在 Jinja 中根据 CSV 值创建列表

python - 使用 CSS 媒体查询和 Flask/Jinja 进行设备检测

Python:通过数据框进行转换或融化和分组

python - 按独特模式拆分字符串

python - 在 python 3.6.1 中找不到平台相关库 <exec_prefix>

python - 如何从外部编写带有变量的函数?

c++ - 为什么我们可以从函数返回 char*?

html - Jinja2 模板 - 扩展 2 级