2010-08-16 3 views
1

나는 다음과 같은 사전있다 :Cheetah에서 Python 용 다차원 사전을 올바르게 사용하려면 어떻게해야합니까?

<class 'Cheetah.NameMapper.NotFound'>: cannot find 'Name' 
     args = ("cannot find 'Name'",) 
     message = "cannot find 'Name'" 

:

{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 

,이 오류가 발생합니다 #for 선언의 템플릿 1 행에서 다음과 같은 키 값을 분리 해 보았습니다.

#for $key, $value in $items 

그러나 필자는 필요한 정보를 얻기 위해 값을 반복 할 수 없습니다.

나는 뻔뻔스럽게 뭔가 잘못하고 있니?

답변

2

먼저 Cheetah의 변수 이름으로 항목을 사용하는 데 문제가있었습니다. 예약어 일 수도 있습니다. 덜 일반적으로 사용하는 것이 더 나을 수도 있습니다.

두 번째로 정수를 키로 사용하는 외부 dict를 사용하므로 $ item은 정수가됩니다. 이름에서 정수를 찾는 것을 의미합니다. 그래서 그런 딕셔너리와 귀하의 경우, 당신은 (너무 DICT의 다른 이름으로) 할 수 있습니다

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

이 같은 목록은 템플릿으로 작동합니다.

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

완벽하게 작동했습니다. 고맙습니다. range (1, amountOfProducts)에서 $ i의 범위를 가진 반복기를 사용해 보았지만 그 중 하나가 작동하지 않는 것 같습니다. 매우 까다 롭습니다. 어쨌든 고칠 수있었습니다! 도움을 주셔서 대단히 감사합니다. . – Eamon

관련 문제