如何在Cheetah中正确使用多维字典?

1 投票
1 回答
1198 浏览
提问于 2025-04-16 02:52

我有一个字典:

{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', ...}]

撰写回答