【发布时间】:2012-03-15 06:11:44
【问题描述】:
我在 Jinja 中遇到了一个变量范围问题,导致表格未对齐。我正在尝试将用 Cheetah 编写的当前模板转换为 Jinja,但由于某种原因,这个逻辑块没有翻译,并且 python 的输出更加混乱。
猎豹原码
#set $sname = ""
#for $serv in $proc:
#if $serv.id == $v[8]:
<td> $serv.shortname </td>
#set $sname = $serv.shortname
#end if
#end for
#if $sname == "":
<td><span style="color:#ff0000">Server not found</span></td>
#end if
因此,上面代码的期望输出是循环通过一些对象匹配 id 到当前行对象并更新值。然后检查该值是否仍然为 null 并打印 no server found 。
Jinja 代码不起作用
{% set sname = "" %}
{{ v[8] }}
{% for serv in proc %}
{% if serv.id == v[8] %}
<td> {{ serv.shortname }} </td>
{% set sname = serv.shortname %}
{% endif %}
{% endfor %}
{% if sname == "" %}
<td><span style="color:#ff0000">Server not found</span></td>
{% endif %}
如果此代码正确匹配 id,它会打印两列,因为在循环之外,sname 仍设置为“”。我尝试在循环内进行比较,但它打印出类似
服务器未找到 |服务器名 |找不到服务器
【问题讨论】:
-
Jinja2 模板中的类似问题寻址范围:stackoverflow.com/questions/4870346/…