[Zope] List within a list - how to use in a page template

David H bluepaul at earthlink.net
Wed Dec 14 02:14:54 EST 2005


Paul Winkler wrote:

>On Wed, Dec 14, 2005 at 06:06:21PM +1300, Cameron Beattie wrote:
>  
>
>>I am trying to get my head around representing a list in a page template.
>>
>>Assume the following list:
>>    
>>
>>>>>m
>>>>>          
>>>>>
>>[[61282125371L, 1, 6, 0], [61282125379L, 1, 6, 0], [61282825240L, 6, 6, 0], 
>>[61282125378L, 1, 6, 0], [61282125374L, 1, 6, 0]
>>    
>>
>>>>>m[0]
>>>>>          
>>>>>
>>[61282125371L, 1, 6, 0]
>>    
>>
>>>>>m[0][0]
>>>>>          
>>>>>
>>61282125371L
>>
>>i.e. m is a list where each member is itself a list.
>>
>>How do I get a page template to render a particular item? Assume a function 
>>getem returns the list.
>><tal:block repeat="m python:here.getem()">
>>   <td tal:repeat="single m" tal:content="single"></td>
>>
>>This code will produce four columns and five rows, with each populated by 
>>the list members. But what if I only want the first and third members in 
>>each case i.e. 2 columns and five rows?
>>
>>I thought it would be something like tal:content="python:single[0]" but 
>>that gives me an unsubscriptable object error.
>>    
>>
>
>That's because, in your example, each time through the loop,
>single is an int. Try indexing m instead.
>
>  
>
I think all thats needed is a tal:condition (he wants to filter out rows)

1)<span tal:define="res python: context.pyTest();"   <--- returns list 
of lists  like [[61282125371L, 1, 6, 0], [61282125379L, 1, 6, 0], 
[61282825240L, 6, 6, 0]]                 tal:repeat="r1 res">
3)    <tal:span tal:repeat = "r2 r1"
4)        tal:condition="python: repeat.r2.number in (1,2,4)"
5)        tal:content="r2">
6) </tal:span>

Where 4 is not brain dead as in my example.

David




-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.zope.org/pipermail/zope/attachments/20051213/c0d5d163/attachment.htm


More information about the Zope mailing list