mirror of
https://github.com/django/django.git
synced 2025-10-24 14:16:09 +00:00
Fixed #28679 -- Fixed urlencode()'s handling of bytes.
Regression in fee42fd99e.
Thanks Claude Paroz, Jon Dufresne, and Tim Graham for the guidance.
This commit is contained in:
committed by
Tim Graham
parent
4d60261b2a
commit
41be85862d
@@ -88,11 +88,24 @@ def urlencode(query, doseq=False):
|
||||
query = query.lists()
|
||||
elif hasattr(query, 'items'):
|
||||
query = query.items()
|
||||
return original_urlencode(
|
||||
[(k, [str(i) for i in v] if isinstance(v, (list, tuple)) else str(v))
|
||||
for k, v in query],
|
||||
doseq
|
||||
)
|
||||
query_params = []
|
||||
for key, value in query:
|
||||
if isinstance(value, (str, bytes)):
|
||||
query_val = value
|
||||
else:
|
||||
try:
|
||||
iter(value)
|
||||
except TypeError:
|
||||
query_val = value
|
||||
else:
|
||||
# Consume generators and iterators, even when doseq=True, to
|
||||
# work around https://bugs.python.org/issue31706.
|
||||
query_val = [
|
||||
item if isinstance(item, bytes) else str(item)
|
||||
for item in value
|
||||
]
|
||||
query_params.append((key, query_val))
|
||||
return original_urlencode(query_params, doseq)
|
||||
|
||||
|
||||
def cookie_date(epoch_seconds=None):
|
||||
|
||||
Reference in New Issue
Block a user