2010-08-16 25 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