Hi Mark, Roach, Mark R. wrote:
Hi, I'm wondering if there is a good way to modify the query string of a get request to change a single variable. For example, let's say my dtml method is accessed like this:
http://myzope/MyFolder/method?var1=foo&var2=bar
now I want one of the links on the page to load the same page, only with a different value for var2.
I could use something like <dtml-var absolute_url>?var1=&dtml-var1;&var2=newvalue
but that seems cumbersome the longer the list of variables gets.
...
full_url_with_query({'var1':'newvalue'})
This is ZTUtils.make_query().
but it seems that the only source of variable info is the (quite large) REQUEST object. Is there any way to pull only the query string variables
yes, this is the subobject "form" of REQUEST.
out of the request, or even better, a function that does what my imaginary "full_url_with_query" function wants to do?
Ok, some examples, requiring you do it inside a python script "Script (Python)" as you would do anyway for logic: # simple copy: from ZTUtils import make_query form = container.REQUEST.form return apply(make_query,(),form) # copy with replacement: from ZTUtils import make_query form = container.REQUEST.form form.update({'value1':'somevalue', 'value2':'othervalue'}) return apply(make_query,(),form) # copy with defaults: from ZTUtils import make_query form = container.REQUEST.form defauls = {'value1':'somevalue', 'value2':'othervalue'} defaults.update(form) return apply(make_query,(),form) # the most simple variable only: from ZTUtils import make_query return make_query(value1=1234,value2='foobar',value3=[1,2,3]) # this also shows how different types are handled. HTH Tino