我在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与当前行对象相匹配并更新值。然后检查该值是否仍然为空,并打印“找不到服务器”。在
相反,如果代码与id正确匹配,则会打印两列,因为在循环之外,sname仍设置为“”。我试着在循环内部进行比较,但结果显示了
找不到服务器|服务器名称|找不到服务器
Jinja中的^{} 循环有一个
else
构造,在没有可用数据时调用该构造。if
也是一个表达式,可用于筛选列表。所以这应该是有效的:唯一需要注意的是,如果在}s,但是如果您只会有一个,那么上面的代码就是您要寻找的。在
proc
中有多个serv
,并且ID与v
中的第9个条目相匹配,那么您将得到多个{相关问题 更多 >
编程相关推荐