[ZPT] beginner question

Fernando Martins fmartins at hetnet.nl
Tue Apr 22 13:26:01 EDT 2003


Hi,

Uwe Schmitt wrote:
> I have a flat structure
>
>      [ {'name':'uwe' }, {'name':'peter'}, {'name': 'jon' }, .... ]
>
> and I want to render it to a two column table
>
>    <table>
>    <tr><td>uwe</td><td>peter</td></tr>
>    <tr><td>jon</td><td>.....</td></tr>
>    ...
>    </table>
>
> Is there a way to do this in ZPT alone, or do I have
> to modify my data ?

This is a quite common need but I'm afraid ZPT has not a nice and clean
solution for it.

What I do is to access the flat structure as a matrix (n x 2, in your case).
For example,

<table tal:define="flat here/getNames;
                   nlines python: len(flat);
                   ncols python: 2">
<tr tal:repeat="i python: range(0, nlines)">
    <td tal:repeat="j python: range(0, ncols)">
        <p tal:condition="python: i*ncols+j < ncl"
           tal:content="python: flat[i*ncols+j]['name']"></p>
    </td>
</tr>
</table>

HTH,
Fernando

PS for the list:

I would prefer to do something like:

<table tal:define="ncols python: 2">
<tr tal:repeat="item here/getNames">
    <td tal:repeat-shift="item ncols">
        <p tal:content="item/name"></p>
    </td>
</tr>

This has the problem of dealing with missing elements (as in an odd list),
but looks more readable.

Any thoughts?




More information about the ZPT mailing list