Same as urllib.urlencode, but supports unicode strings. >>> urlencode({'text':'foo bar'}) 'text=foo+bar' >>> urlencode({'x': [1, 2]}, doseq=True) 'x=1&x=2'
(query, doseq=0)
| 91 | |
| 92 | |
| 93 | def urlencode(query, doseq=0): |
| 94 | """ |
| 95 | Same as urllib.urlencode, but supports unicode strings. |
| 96 | |
| 97 | >>> urlencode({'text':'foo bar'}) |
| 98 | 'text=foo+bar' |
| 99 | >>> urlencode({'x': [1, 2]}, doseq=True) |
| 100 | 'x=1&x=2' |
| 101 | """ |
| 102 | |
| 103 | def convert(value, doseq=False): |
| 104 | if doseq and isinstance(value, list): |
| 105 | return [convert(v) for v in value] |
| 106 | else: |
| 107 | return utils.safestr(value) |
| 108 | |
| 109 | query = {k: convert(v, doseq) for k, v in query.items()} |
| 110 | return urllib_urlencode(query, doseq=doseq) |
| 111 | |
| 112 | |
| 113 | def changequery(query=None, **kw): |