1

私は次の辞書を持っています:

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

テンプレートの1行目で、#for宣言で、次のようなキー値を分離しようとしました。

#for $key, $value in $items

ただし、必要な情報を取得するために値を反復処理することはできません。

私は露骨に間違ったことをしていますか?

4

1 に答える 1

2

まず、Cheetahで変数名としてアイテムを使用する際に問題が発生しました。予約語か何かかもしれません。一般的でないものを使用する方がよい場合があります。

次に、整数をキーとして使用する外部dictを使用するため、$itemはその整数になります。これは、整数で名前を探すことを意味します。したがって、そのようなdictを使用する場合は、次のようにすることができます(dictの別の名前も使用)。

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

このようなリストは、テンプレートで機能します。

products = [{'Name':'prod1', ...}, {'Name': 'prod2', ...}]
于 2010-08-16T21:07:31.737 に答える