当我使用webpy运行以下代码时,我得到“NameError:全局名称'test'未定义” 当我在海峡python中运行代码时,它的工作方式与预期的一样。就好像webpy不会将[$ test = each]行视为for循环的一部分并导致错误。如何将webpy作为for循环的一部分读取第二行?
$def with (orders)
<h1>OUTscreen</h1>
<table border="1">
<tr>
<th>Has Waited</th>
<th>Size</th>
<th>Type</th>
<th>Customer</th>
</tr>
$for each in orders:
$test = each
<tr>
<td>$test.minsInYard min</td>
<td>$test.size</td>
<td>$test.eqType</td>
<td>$test.cust</td>
<td>$test.trucker</td>
</tr>
</table>
感谢您的帮助
答案 0 :(得分:1)
在您发布的示例中,您没有理由不能:
$for test in orders:
<tr>
<td>$test.minsInYard min</td>
...
“每个”似乎是不必要的(无论如何,在此摘录中)。
更一般地说,Webpy只允许在模板中使用'$ code'作为前缀的任意python代码,如下所示:
$code:
for each in orders:
test = each
仅在变量名称前加上'$'是不够的。
答案 1 :(得分:0)
templator documentation for web.py
中未提及直接但是,根据所提供的文档,您可能需要将表达式包装在大括号中,如下所示:
$for each in orders:
${test = each}
如果这不起作用,我建议可能无法做到。但是,鉴于这是一个模板,任何逻辑都应该在模板本身外部完成,这意味着分配和其他任何东西都应该是非平凡的表达式。
答案 2 :(得分:0)
我不知道为什么会这样,但是在第二个$之后添加了4个空格。谢谢你的帮助。
$for test in orders:
$ test = each
<tr>
<td>$test.minsInYard min</td>
<td>$test.size</td>
<td>$test.eqType</td>
<td>$test.cust</td>
<td>$test.trucker</td>
</tr>
</table>