鉴于以下 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 内部范围的任何内容,是的,我实际上可以使用和更改 sep var... 在这个示例中,该行
{% set sep=',' %}
被执行并执行以下行
[PROOF ...
实际上会导致下次显示,但是
{{- sep -}}
只是再次渲染为空变量。我在这里缺少/不明白什么......
问题是变量的范围。这sep
for 循环内的变量被认为是另一个变量,而不是您在顶部初始化的变量。
这里提供了相同的问题和一些答案:Jinja 变量的范围可以超出内部块吗? https://stackoverflow.com/questions/4870346/can-a-jinja-variables-scope-extend-beyond-in-an-inner-block
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)