Hi Andy, Hallo Dieter, Thanks a lot for your prompt answers! It gave me the good feeling about having support from competent people! As I supposed there did not exist a clean solution (I don't like extrenal python methods -- Sorry Andy!) for that problem. It's even not in builtin in Zope :-( So I programmed my first hotfix product which adds the method 'query_string' to the HTTPRequest class. Have a look at: http://www.zope.org/Members/gregweb/HTTPRequestHotfix What do you think? Should I file this to the tracker? Greg ------------------------------------------------------------------------ HTTPRequestHotix Product This so called 'Hotfix' adds the new method 'query_string' to the HTTPRequest class. The method is then accessible through the 'REQUEST' object. It builds a url quoted (quote_plus) query string from a dictionary (usually from the form dictionary which is based on QUERY_STRING). Usage query_string([[replace]=replace_dict], [[original]=original_dict]]) Updates 'original_dict' by the values in 'replace_dict' and returns the result as url quoted query string. 'original_dict' defaults to 'REQUEST.form' if no parameter is passed to it. Keys in 'replace_dict' with a value of 'None' (or _.None in DTML) will be deleted from 'original_dicts' before being quoted. The original 'REQUEST.form' will remain unchanged. Examples (assuming 'REQUEST.form' is {'foobar':'no translation', 'foo':'bar'}) 1. query_string(replace={'foobar':'furchtbar in german'}) returns 'foobar=furchtbar+in+german&foo=bar' 2. query_string(replace={'gaga':'&%+'}, original={'bar', 'foo'}) returns 'gaga=26%25%2b&bar=foo' 3. query_string(replace={'bar':'foo', 'foo', _.None}) returns 'foobar=no+translation&bar=foo' 4. The same in DTML: <dtml-var "REQUEST.query_string(replace={'bar':'foo', 'foo', _.None})"> returns 'foobar=no+translation&bar=foo' Have fun! Grégoire Weber, 2001-07-12 At 08:10 11.07.01 -0700, Andy McKay wrote:
A simple python method that loops through the form doesnt need urllib.
eg:
for k, v in context.REQUEST.form.items(): if k == 'foo': # do something else: somestr = '%s&%s=%s' % (somestr, k, v)
At 20:46 11.07.01 +0200, Dieter Maurer wrote:
Andy McKay writes:
for k, v in context.REQUEST.form.items(): if k == 'foo': # do something else: somestr = '%s&%s=%s' % (somestr, k, v) Do not forget quoting:
Query string fragments must be "urllib.quote_plus"ed.
_____________________________________ Grégoire Weber mailto:gregoire.weber@switzerland.org