Opened 4 years ago
Last modified 4 years ago
#32345 closed Bug
i18n.set_language unquotes next_url and produces wrong url for url params containing "&" character — at Version 1
Reported by: | Sebastian Kapunkt | Owned by: | nobody |
---|---|---|---|
Component: | Internationalization | Version: | 3.1 |
Severity: | Normal | Keywords: | i18n unquote |
Cc: | Johannes Maron | Triage Stage: | Ready for checkin |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | yes | UI/UX: | no |
Description (last modified by )
When changing the language and the current URL parameter include a parameter value with an encoded "&" like
?paramter=some%20%26%20thing
the redirect response from set_langauge
is
?paramter=some%20&%20thing
where I would still expect the same URL from as in the beginning.
I've written a Django test that shows this bug:
def test_set_language_url_params(): from django.test import RequestFactory from django.views.i18n import set_language rf = RequestFactory() request = rf.post("", next="") request.META['HTTP_REFERER'] = '/someurl/?paramter=some%20%26%20thing' response = set_language(request) assert response.url == '/someurl/?paramter=some%20%26%20thing'
Change History (1)
comment:1 by , 4 years ago
Cc: | added |
---|---|
Description: | modified (diff) |
Easy pickings: | set |
Triage Stage: | Unreviewed → Accepted |
Note:
See TracTickets
for help on using tickets.
After some serious digging, the bug was introduced here: https://github.com/django/django/commit/9e3f141701b96b6974b3386f83dc76e70a41377d via #26466.
The problem seems to be, that the URL is not properly parsed. The path and GET attributes needs to be handled differently for that to work.