2014-01-09 138 views
0

當我運行下面的代碼使用webpy我得到「NameError:全球名稱'測試'沒有定義」 當我在strait python中運行代碼時,它的工作方式與預期一樣。就好像webpy不會將[$ test = each]行作爲for循環的一部分並導致錯誤。我怎樣才能讓webpy讀取第二行作爲for循環的一部分?webpy無法識別for循環中的第二行python

$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

當for循環中使用'each.XXX'而不是'test.XXX'時會發生什麼? – 2014-01-09 03:36:07

回答

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> 
0

變量賦值不直接templator documentation for web.py

然而提到的,哪些文件沒有,你可能需要包裝表達的括號像這樣:

$for each in orders: 
    ${test = each} 

如果這不起作用,我會建議它不可能。但是,鑑於這是一個模板,任何邏輯都應該在模板本身的外部完成,這意味着分配和任何超過非平凡的表達都應該被要求。

1

在這個例子中你張貼有沒有理由,你爲什麼不能有:

$for test in orders: 
<tr> 
<td>$test.minsInYard min</td> 
... 

的「每個」似乎沒有必要(在此摘錄,反正)。

更一般地,Webpy只允許在您與「$代碼」前綴它的模板任意Python代碼,就像這樣:

$code: 
    for each in orders: 
     test = each 

這是不夠的只是把一個「$」變量前名稱。

+0

你是對的,每一個都是不必要的。 – Jay42