Gustavo Córdova Avila
gustavo.cordova at q-voz.com
Fri Jul 9 19:49:14 EDT 2004
Don't get y'alls panties in a bunch, QUERY_STRING parameters and POSTed data are ORTHOGONAL, they don't have anything to do with each other. I normally parse urlencoded parameters using something like: >>> params = dict(util.parse_qsl(request.args or "")) because normally I only expect a single instance of any parameter, and any extra instances will get clobbered by this (not that this particular application cares, validation and verification happens after parsing). IF you know for a fact that the POSTed data is URLEncoded, you can do something like the previous snippet and build a dictionary of those parameters also: >>> data = req.read(req.content_length) >>> posted_params = dict(util.parse_qsl(data or "")) So now you have two dictionaries. Parsing for multiple instances of a single parameter is left as an excersize to the reader. ;-) -gus Jorey Bump wrote: > Jorey Bump wrote: > >> mod_python user wrote: >> >>> I would like to be able to retrieve both _form_ and _query_ >>> variables, even if they share the same name. e.g. >>> >>> <form method='post' action='/?name=NAME_ONE'> <input type='hidden' >>> name='name' value='NAME_TWO' /> <input type='submit' /> </form> >>> >>> It seems that when both a GET and POST variable share the same name >>> that the GET (query) variable always wins. >>> >>> Does anybody know how this might be accomplished? >> >> >> I don't know about servlets, but mod_publisher returns a list: >> >> ['NAME_ONE', 'NAME_TWO'] > > > Duh. I mean mod_python.publisher. :P > >> I don't know what causes this behaviour. Since only a POST request is >> sent, not a GET, I would expect any arguments in the URL to be >> ignored and only variables in the message body to be recognized. > > > FWIW, mod_php ignores the URL arguments: > > Array ( [name] => NAME_TWO ) > > This seems more appropriate. A user shouldn't be allowed to mess with > POST data so easily. > > If this gets fixed (assuming it's a bug), you can still use > req.unparsed_uri and do your own parsing. For example, use publisher > and create foo.py with this function: > > def test(req): > return req.unparsed_uri > > Then view the results at: > > http://localhost/foo.py/test?name=something > > Extract whatever you want from the resulting string. > _______________________________________________ > Mod_python mailing list > Mod_python at modpython.org > http://mailman.modpython.org/mailman/listinfo/mod_python > > -------------- next part -------------- A non-text attachment was scrubbed... Name: gustavo.cordova.vcf Type: text/x-vcard Size: 449 bytes Desc: not available Url : http://modpython.org/pipermail/mod_python/attachments/20040709/dc6f9f98/gustavo.cordova.vcf
|