Validate URL in Python & Django
From time to time we need to validate whether the URL is valid.
Of course, there is a quick hacky implementation of checking if the input string has the URL format, such as:
def valid_url(to_validate: str) -> bool:
if to_validate.startswith("http"):
# assume valid and move on...
...but let's make sure we do a better job than the above!
Python
In Python 3, there is a urllib
library and we can use its parse
module (documentation), i.e.
from urllib.parse import urlparse
def valid_url(to_validate:str) -> bool:
o = urlparse(to_validate)
return True if o.scheme and o.netloc else False
Django
Django comes with a variety of utility functions that will make your web development convenient. URLValidator
module will help you validate whether the given URL is valid, and raise ValidationError
exception if invalid:
from django.core.validators import URLValidator
from django.core.exceptions import ValidationError
def valid_url(to_validate:str) -> bool:
validator = URLValidator()
try:
validator(to_validate)
# url is valid here
# do something, such as:
return True
except ValidationError as exception:
# URL is NOT valid here.
# handle exception..
print(exception)
return False