[ZPT] Re: Repeat over dict with options
Steven Hayles
sh23 at le.ac.uk
Wed Jun 2 10:36:23 EDT 2004
David
You're just seeing the results dictionary rendered as a string. From
your required result, I think you want something like:
<p tal:define="value options/results" tal:repeat="v
python:value[1].values() + value[2].values()" tal:content="v">
</p>
Steven Hayles
David Pratt wrote:
> Hi Chis. Thank you for your reply. This is the first time I am trying
> to use the predefined options variable and as you can guess it has been
> getting the best of me. I took your advice and am returning this from my
> Script python as opposed to RESPONSE.redirect with parameter passing.
>
>> return context.test_results(results = {1:{'foo':'bar','foo2':'bar2'},
>> 2:{'foo':'barnone','foo2':'barnone2'}})
>
>
> In my zpt, I have done this:
>
> <span tal:define="value options/results">
> <p>
> <span tal:content="value">value of results</span>
> </p>
> </span>
>
> which yields:
>
> {1:{'foo':'bar','foo2':'bar2'}, 2:{'foo':'barnone','foo2':'barnone2'}
>
> I was expecting to get each item of the dictionary returned on a
> separate line and then doing something to get the value based on the key
> like value.values() and then another variable to get value of bar based
> on['foo']
>
> My quest is how to get the values for foo and foo2 out of this so that
> the result is
>
> <p>
> bar
> </p>
> <p>
> bar2
> </p>
>
> <p>
> barnone
> </p>
> <p>
> barnone2
> </p>
>
>
>
>
>
>
>
>
> On Wednesday, June 2, 2004, at 05:11 AM, Chris Withers wrote:
>
>> David Pratt wrote:
>>
>>> from ZTUtils import make_query
>>> query = make_query(results = {'foo':'bar','foo2':'bar2'})
>>> return RESPONSE.redirect('test_results?%s' % query)
>>
>>
>> that should really be:
>>
>> return RESPONSE.redirect('test_results?' + query)
>>
>>> This produces a url http://blah.com/
>>> test_results?results.foo:record=bar&results.foo2:record=bar2
>>> If am not getting anything using a repeat with options/results.
>>
>>
>> That's 'cos stuff in the REQUEST doesn't magically get put into
>> options. ZPT doesn't try and do any magic, which is a very good thing...
>>
>> > How
>>
>>> should I construct the zpt to get the values of foo and foo2?
>>> I have been trying iterations of something like this:
>>> <span tal:repeat="value options/results">
>>
>>
>> <span tal:repeat="value request/form/results">
>>
>>> I noticed that the request object contains the dictionary I am passing
>>
>>
>> No it doesn't, it contains a string, which happens to be the same as
>> the string representation of your dictionary.
>>
>>> Help much appreciated since I can't seem to get any further with this
>>> in the meantime.
>>
>>
>> I'd suggest changing your original python script to be:
>>
>> return context.test_results(results = {1:{'foo':'bar','foo2':'bar2'},
>> 2:{'foo':'barnone','foo2':'barnone2'}})
>>
>> ...now 'results' will be in options, as you originally expected, AND
>> it'll contain python types as you're expecting...
>>
>> cheers,
>>
>> Chris
>>
>> --
>> Simplistix - Content Management, Zope & Python Consulting
>> - http://www.simplistix.co.uk
>>
More information about the ZPT
mailing list