Opened 5 years ago

Closed 3 years ago

#12140 closed Bug (fixed)

urlencode empty list encoding bug & fix

Reported by: aneil Owned by: nobody
Component: HTTP handling Version: master
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)

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.

Attachments (2)

urlencode.diff (504 bytes) - added by aneil 5 years ago.
urlencode empty list bug patch
12140-2.diff (1.6 KB) - added by claudep 3 years ago.
Patch updated to current trunk

Download all attachments as: .zip

Change History (12)

Changed 5 years ago by aneil

urlencode empty list bug patch

comment:1 Changed 5 years ago by aneil

  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset

Change is at line 41, not line 557.

comment:2 Changed 5 years ago by russellm

  • Needs tests set
  • Triage Stage changed from Unreviewed to Accepted

comment:3 Changed 5 years ago by floguy

  • Needs tests unset
  • Version changed from 1.1 to SVN

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 Changed 4 years ago by mattmcc

  • Severity set to Normal
  • Type set to Bug

comment:5 Changed 4 years ago by julien

  • Patch needs improvement set

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

comment:6 Changed 4 years ago by julien

  • Description modified (diff)

Reformatted description.

comment:7 Changed 3 years ago by aaugustin

  • UI/UX unset

Change UI/UX from NULL to False.

comment:8 Changed 3 years ago by aaugustin

  • Easy pickings unset

Change Easy pickings from NULL to False.

Changed 3 years ago by claudep

Patch updated to current trunk

comment:9 Changed 3 years ago by claudep

  • Patch needs improvement unset

comment:10 Changed 3 years ago by Claude Paroz <claude@…>

  • Resolution set to fixed
  • Status changed from new to closed

In [fe873e276527534b3c0c22f457ee314cf029ced4]:

Fixed #12140 -- Fixed http.urlencode result for empty lists

Thanks aneil for the report and the initial patch.

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