Skip to content

Commit fe873e2

Browse files
committed
Fixed django#12140 -- Fixed http.urlencode result for empty lists
Thanks aneil for the report and the initial patch.
1 parent a2022da commit fe873e2

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

django/utils/http.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ def urlencode(query, doseq=0):
7171
query = query.items()
7272
return urllib.urlencode(
7373
[(smart_str(k),
74-
isinstance(v, (list,tuple)) and [smart_str(i) for i in v] or smart_str(v))
74+
[smart_str(i) for i in v] if isinstance(v, (list,tuple)) else smart_str(v))
7575
for k, v in query],
7676
doseq)
7777

tests/regressiontests/utils/http.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ def test_urlencode(self):
3131
# 2-tuples (the norm)
3232
result = http.urlencode((('a', 1), ('b', 2), ('c', 3)))
3333
self.assertEqual(result, 'a=1&b=2&c=3')
34+
3435
# A dictionary
3536
result = http.urlencode({ 'a': 1, 'b': 2, 'c': 3})
3637
acceptable_results = [
@@ -44,6 +45,13 @@ def test_urlencode(self):
4445
'c=3&b=2&a=1'
4546
]
4647
self.assertTrue(result in acceptable_results)
48+
result = http.urlencode({'a': [1, 2]}, doseq=False)
49+
self.assertEqual(result, 'a=%5B%271%27%2C+%272%27%5D')
50+
result = http.urlencode({'a': [1, 2]}, doseq=True)
51+
self.assertEqual(result, 'a=1&a=2')
52+
result = http.urlencode({'a': []}, doseq=True)
53+
self.assertEqual(result, '')
54+
4755
# A MultiValueDict
4856
result = http.urlencode(MultiValueDict({
4957
'name': ['Adrian', 'Simon'],

0 commit comments

Comments
 (0)