[Zope] tal loop to render table
Alexis Roda
alexis.roda.villalonga at gmail.com
Wed Nov 29 14:44:49 EST 2006
En/na Dennis Schulz ha escrit:
> I would like to build a tal loop that renders a list of elements
> (widgets in my case) in a table.
> (for example I have a list of 9 items, then it renders a table: five
> rows with 2,2,2,2,1 items)
> the table has 2 columns, so i would need to open and close the table row
> every second item.
> I tried to check with a condition if the row is odd or even, but
> unopened and unclosed tags are not valid.
>
> Is there any possibiliy to do this with tal?
Tricky and not tested from restricted code ... but you're asking for a
tal solution:
<table tal:define="l python:the_list + [ None ];
rows python:zip(l[0::2], l[1::2]);
">
<tr tal:repeat="row rows">
<td tal:repeat="cell row">
</td>
</tr>
</table>
An example:
>>> the_list = [1,2,3,4,5,6,7,8,9]
>>> l = the_list + [ None ]
>>> zip(l[0::2], l[1::2])
[(1, 2), (3, 4), (5, 6), (7, 8), (9, None)]
>>> the_list = [1,2,3,4,5,6,7,8,9,10]
>>> l = the_list + [ None ]
>>> zip(l[0::2], l[1::2])
[(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]
Instead of the tricky use of zip and extended slices write a more
generic python script :
convert_list_to_array(the_list, column_count=2)
HTH
More information about the Zope
mailing list