|
Graham Dumpleton
grahamd at dscpl.com.au
Wed May 24 01:03:51 EDT 2006
Time for a couple more questions. :-)
On 24/05/2006, at 1:55 PM, David Bear wrote:
>>> Unfortunately PSP doesn't play too nice with publisher as far as
>>> form creation and will create its own if you access "form" from
>>> inside PSP page. If request is a GET request, although redundantly
>>> created, the form will still work. If a POST request though, there
>>> will be no fields as publisher already consumed it.
>>
>> So, in order to pass req.form to a psp, I would need to copy it to
>> some object? simple
>>
>> thisform = req.form
>> vars = thisform
>> return psp.PSP('somepsp.html', vars)
>>
>> won't work? or will the assignment make a copy?
>>
>
> I just tried
>
> myform = copy.deepcopy(req.form)
>
> and it failed..
>
> where is req.form documented? I'm looking for its methods.
>
>>>
>>> The work around for this is to use something like:
>>>
>>> page = psp.PSP(.....)
>>> page.run({"form": form})
>>> ...
>>>
>>> There was discussion about having PSP understand convention of
>>> req.form
>>> being populated by publisher and use it if it exists, but no
>>> consensus
>>> was reached on whether it was a good idea or not.
You don't need to make a deep copy. The only thing wrong with what
you had is
that vars has to be a dictionary.
thisform = req.form
vars = { "form": thisform }
return psp.PSP('somepsp.html', vars=vars)
Then just access methods of form object (ie., FieldStorage) through
"form" in PSP
just like you would normally if using FieldStorage object. Eg.
form.get("field")
etc.
Graham
|