[mod_python] clarity on request.form

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



More information about the Mod_python mailing list