diff --git a/django/utils/http.py b/django/utils/http.py index 4c3b6af8686..4912c9c46a2 100644 --- a/django/utils/http.py +++ b/django/utils/http.py @@ -9,7 +9,8 @@ def urlquote(url, safe='/'): can safely be used as part of an argument to a subsequent iri_to_uri() call without double-quoting occurring. """ - return force_unicode(urllib.quote(smart_str(url))) + return force_unicode(urllib.quote(smart_str(url), safe)) + urlquote = allow_lazy(urlquote, unicode) def urlquote_plus(url, safe=''): diff --git a/tests/regressiontests/text/tests.py b/tests/regressiontests/text/tests.py index 0fd22b58b0a..962a30ef19e 100644 --- a/tests/regressiontests/text/tests.py +++ b/tests/regressiontests/text/tests.py @@ -20,8 +20,12 @@ friends' >>> from django.utils.http import urlquote, urlquote_plus >>> urlquote(u'Paris & Orl\xe9ans') u'Paris%20%26%20Orl%C3%A9ans' +>>> urlquote(u'Paris & Orl\xe9ans', safe="&") +u'Paris%20&%20Orl%C3%A9ans' >>> urlquote_plus(u'Paris & Orl\xe9ans') u'Paris+%26+Orl%C3%A9ans' +>>> urlquote_plus(u'Paris & Orl\xe9ans', safe="&") +u'Paris+&+Orl%C3%A9ans' ### iri_to_uri ########################################################### >>> from django.utils.encoding import iri_to_uri