给定以下 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/