如何在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'"
在模板的第一行,在#for声明那里,我试着把键值分开,比如:
#for $key, $value in $items
但是,我还是无法遍历这些值,获取我需要的信息。
我是不是做错了什么明显的事情?
1 个回答
2
首先,我在Cheetah中用“items”作为变量名时遇到了问题。可能这是个保留字或者其他什么原因。用一个不那么通用的名字可能会更好。
其次,因为你用的是一个外部字典,键是整数,所以$item就是那个整数。这意味着你在用一个整数去查找名字。所以在你这种情况下,如果字典的名字换一下,你可以这样做:
#for $item in $products
<td>$products[$item].Name</td>
...
#end for
像这样的列表可以和你的模板配合使用。
products = [{'Name':'prod1', ...}, {'Name': 'prod2', ...}]