thanks for that Anthony .... I thought that in some automagicaly way web2py
was seriallizing/deserializing... ;)
by the way as the request.vars.vars contains "<Storage {'eeee': '5555',
'www': '4'}>" ast.literal_eval(request.vars.vars[9:-1]) did the trick
Just wondering if there is an easier way of doing it.... (I mean: to pass
the current URL+vars to the LOAD)
On Thu, May 17, 2012 at 1:03 PM, Anthony <[email protected]> wrote:
> As I pass it as vars via LOAD:
>>
>> {{=LOAD('default',
>> 'send_suggestion',
>> vars={ 'c':request.controller,
>> 'f':request.function,
>> 'args':request.args,
>> 'vars':request.vars},
>> ajax_trap=True)}}
>>
>> does it mean that request.vars has not been serialized/deserialized
>> correctly ?
>>
>
> When you pass a dict as a URL var, the dict is converted to a string
> representation of the dict and then urlencoded. When it is decoded, you
> have a string representation of the dict (equivalent to repr(request.vars)
> in this case), not the dict itself (actually, I think it's a list with the
> string representation of the dict as its sole element). To get the dict
> back, you can safely eval it using ast.literal_eval:
>
> import ast
> _vars = ast.literal_eval(request.vars.vars[0]) if request.vars.vars else
> {}
>
> Anthony
>
--
Sebastian E. Ovide