webpy无法识别for循环中的第二行python

时间:2014-01-09 03:24:28

标签: python

当我使用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>

感谢您的帮助

3 个答案:

答案 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>