mirror of
https://github.com/django/django.git
synced 2025-06-07 20:49:11 +00:00
cope with unsplittable urls in smarl_urlquote.
This commit is contained in:
parent
161cafb6f6
commit
74809fdcc7
@ -150,6 +150,7 @@ fix_ampersands = allow_lazy(fix_ampersands, six.text_type)
|
|||||||
def smart_urlquote(url):
|
def smart_urlquote(url):
|
||||||
"Quotes a URL if it isn't already quoted."
|
"Quotes a URL if it isn't already quoted."
|
||||||
# Handle IDN before quoting.
|
# Handle IDN before quoting.
|
||||||
|
try:
|
||||||
scheme, netloc, path, query, fragment = urlsplit(url)
|
scheme, netloc, path, query, fragment = urlsplit(url)
|
||||||
try:
|
try:
|
||||||
netloc = netloc.encode('idna').decode('ascii') # IDN -> ACE
|
netloc = netloc.encode('idna').decode('ascii') # IDN -> ACE
|
||||||
@ -157,6 +158,9 @@ def smart_urlquote(url):
|
|||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
url = urlunsplit((scheme, netloc, path, query, fragment))
|
url = urlunsplit((scheme, netloc, path, query, fragment))
|
||||||
|
except ValueError:
|
||||||
|
# invalid IPv6 URL (normally square brackets in hostname part).
|
||||||
|
pass
|
||||||
|
|
||||||
# An URL is considered unquoted if it contains no % characters or
|
# An URL is considered unquoted if it contains no % characters or
|
||||||
# contains a % not followed by two hexadecimal digits. See #9655.
|
# contains a % not followed by two hexadecimal digits. See #9655.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user