2010-08-16 62 views
1

我有以下解釋:如何正確使用Cheetah for Python中的多維字典?

{0: {'Shortname': 'cabling', 'Name': 'CAT5 Cabling', 'MSRP': '$45.00'}, 1: {'Shortname': 'antenna', 'Name': 'Radio Antenna', 'MSRP': '$35.00'}} 

而且使用獵豹,模板的以下部分:

#for $item in $items 
<tr> 
<td>$item.Name</td> 
<td>$item.MSRP</td> 
</tr> 
#end for 

當我運行代碼,我得到這個錯誤:

<class 'Cheetah.NameMapper.NotFound'>: cannot find 'Name' 
     args = ("cannot find 'Name'",) 
     message = "cannot find 'Name'" 

在模板中,在#for聲明的第1行中,我嘗試將鍵值分開,例如:

#for $key, $value in $items 

但是,我仍然無法遍歷值來獲取必要的信息。

我在做什麼明目張膽的錯?

回答

2

首先,我在使用物品作爲獵豹變量名稱時遇到了問題。可能是一個保留字或什麼的。 不太通用的東西可能會更好用。其次,由於您使用外部字典與整數作爲關鍵,$ item將是該整數。 這意味着您在整數中查找名稱。所以你的情況有這樣一個字典,你可能會做(與字典不同的名字太):

#for $item in $products 
<td>$products[$item].Name</td> 
... 
#end for 

像這樣的列表將與您的模板工作。

products = [{'Name':'prod1', ...}, {'Name': 'prod2', ...}] 
+0

這工作完美無瑕!非常感謝你。 我嘗試使用範圍迭代器(對於範圍(1,amountOfProducts)中的$ i,但這似乎也不起作用)非常棘手。 。 – Eamon 2010-08-16 21:41:27