如何在Cheetah for Python中正确使用多维词典?

时间:2010-08-16 19:21:28

标签: python templates dictionary cheetah

我有以下字典:

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

使用Cheetah,以下模板部分:

#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'" 

在模板第1行的#for声明中,我尝试分离出键值,例如:

#for $key, $value in $items

但是,我仍然无法迭代这些值来获取必要的信息。

我做了一些明显的错误吗?

1 个答案:

答案 0 :(得分:2)

首先,我在使用物品作为猎豹的变量名时遇到了问题。可能是一个保留的词或什么的。 不太通用的东西可能更好用。

其次,由于您使用带有整数的外部字典作为键,因此$ item将是该整数。 这意味着您在整数中查找Name。因此,对于你这样的dict,你可能会(也有不同的dict名称):

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

这样的列表适用于您的模板。

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