Opened 14 years ago

Last modified 12 years ago

#12140 closed Bug

urlencode empty list encoding bug & fix — at Version 6

Reported by: aneil Owned by: nobody
Component: HTTP handling Version: dev
Severity: Normal Keywords: urlencode
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Julien Phalip)

django.utils.http.urlencode doesn't behave the same as urllib.urlencode for empty lists:

urllib.urlencode({'foo':[]},True) => ''

django.utils.http.urlencode({'foo':[]},True) => 'foo=%5B%5D'

The attached diff has a change at line 557 in trunk/django/utils/http.py:

-         isinstance(v, (list,tuple)) and [smart_str(i) for i in v] or smart_str(v))
+         [smart_str(i) for i in v] if isinstance(v, (list,tuple)) else smart_str(v))

Attached.

Change History (7)

by aneil, 14 years ago

Attachment: urlencode.diff added

urlencode empty list bug patch

comment:1 by aneil, 14 years ago

Change is at line 41, not line 557.

comment:2 by Russell Keith-Magee, 14 years ago

Needs tests: set
Triage Stage: UnreviewedAccepted

comment:3 by floguy, 14 years ago

Needs tests: unset
Version: 1.1SVN

I've updated the patch to include tests for this. It's all isolated in a branch here: http://github.com/ericflo/django/compare/ticket12140

comment:4 by Matt McClanahan, 13 years ago

Severity: Normal
Type: Bug

comment:5 by Julien Phalip, 13 years ago

Patch needs improvement: set

The tests would need to be rewritten using unittests since this is now Django's preferred way.

comment:6 by Julien Phalip, 13 years ago

Description: modified (diff)

Reformatted description.

Note: See TracTickets for help on using tickets.
Back to Top