#19081 closed Bug (duplicate)
Non-ASCII query string aren't decoded properly
| Reported by: | Aymeric Augustin | Owned by: | Aymeric Augustin |
|---|---|---|---|
| Component: | HTTP handling | Version: | dev |
| Severity: | Release blocker | Keywords: | |
| Cc: | Triage Stage: | Accepted | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | yes | Patch needs improvement: | yes |
| Easy pickings: | no | UI/UX: | no |
Description (last modified by )
In [fcc8de05] I enabled unicode_literals in django.core.servers.basehttp.
This turns environ['QUERY_STRING'] into a unicode string, which later on prevents correct decoding in QueryDict.
A quick'n'dirty, Python 2 only fix is:
diff --git a/django/core/servers/basehttp.py b/django/core/servers/basehttp.py
index 19b287a..af8f2a0 100644
--- a/django/core/servers/basehttp.py
+++ b/django/core/servers/basehttp.py
@@ -144,9 +144,9 @@ class WSGIRequestHandler(simple_server.WSGIRequestHandler, object):
env['SERVER_PROTOCOL'] = self.request_version
env['REQUEST_METHOD'] = self.command
if '?' in self.path:
- path,query = self.path.split('?',1)
+ path, query = self.path.split(b'?', 1)
else:
- path,query = self.path,''
+ path, query = self.path, b''
env['PATH_INFO'] = unquote(path)
env['QUERY_STRING'] = query
An audit of this module seems necessary. It may even be extended to django.core.servers.
Change History (3)
comment:1 by , 13 years ago
| Description: | modified (diff) |
|---|---|
| Patch needs improvement: | set |
comment:3 by , 13 years ago
| Resolution: | → duplicate |
|---|---|
| Status: | new → closed |
I think it's a duplicate of #19075, where i suggested another patch. If it is not correct, I think the test case can be kept.
Note:
See TracTickets
for help on using tickets.
This module starts with a comment that states:
If this code was copy-pasted into Django for compatibility with Python < 2.5, and we didn't alter it significantly, we should consider switching to the classes provided by
wsgiref.