【问题标题】:How can I properly use multidimensional dictionaries in Cheetah for Python?如何在 Cheetah for Python 中正确使用多维字典?
【发布时间】:2010-08-16 19:21:27
【问题描述】:

我有以下字典:

{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

但是,我仍然无法遍历这些值以获取必要的信息。

我是不是做错了什么?

【问题讨论】:

    标签: python templates dictionary cheetah


    【解决方案1】:

    首先,我在 Cheetah 中使用 items 作为变量名时遇到了问题。可能是保留字之类的。 不太通用的东西可能会更好用。

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

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

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

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

    【讨论】:

    • 完美运行!非常感谢。我尝试使用带范围的迭代器(for $i in range(1, amountOfProducts),但这似乎也不起作用。非常棘手。无论如何,您已修复它!非常感谢您的帮助。跨度>
    猜你喜欢
    • 2023-03-08
    • 2017-04-16
    • 2012-11-19
    • 2016-08-05
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多