On Dec 28, 2010, at 3:43 PM, Michele Comitini wrote:
>
> I thought it was intentional to keep urlencode compat.
>
> I used to solve it like this:
>
> vars = (('a',1), ('b',2), ('b',3))
request.vars is a dict already, so it was more straightforward to go the other
way. Also, I think that's the way that a lot of cgi packages do it (Perl, for
example, IIRC).
>
>
>> There was a fix a little while back, I think, to handle this for incoming
>> URLs. Sometimes a key appears more than once in a URL query string, like
>> this:
>>
>> http://domain.com/a/b/c?a=1&b=2&b=3
>>
>> A typical place this happens is for form checkboxes, where the same key
>> (associated with the group of checkboxes) gets sent once for each box that's
>> checked.
>>
>> This shows up in request.vars as a list, so the above ends up being
>> something like:
>>
>> vars = dict(a=1, b=[2,3])
>>
>> ...except that they're strings.
>>
>> The problem was that this wasn't being handled for outgoing URLs (in URL()),
>> so if you tried to send the example above you'd get something like:
>>
>> http://domain.com/a/b/c?a=1&b=[2, 3]
>>
>> ...which isn't right. The fix is to generate a URL that looks like the first
>> example above.
>>
>> This fix is also incorporated into the recent hmac signature checking of
>> immutable vars.