Nuestros mejores programadores han agotado sus provisiones de café, buscando diariamente por la respuesta, hasta que Tatiana encontró la solución en GitLab por lo tanto ahora la compartimos aquí.
Solución:
Utilice el paquete de validadores:
>>> import validators
>>> validators.url("http://google.com")
True
>>> validators.url("http://google")
ValidationFailure(func=url, args='value': 'http://google', 'require_tld': True)
>>> if not validators.url("http://google"):
... print "not valid"
...
not valid
>>>
Instálelo desde PyPI con pip (pip install validators
).
En realidad, creo que esta es la mejor manera.
from django.core.validators import URLValidator
from django.core.exceptions import ValidationError
val = URLValidator(verify_exists=False)
try:
val('http://www.google.com')
except ValidationError, e:
print e
si configuras verify_exists
a True
en realidad verificará que la URL existe; de lo contrario, solo verificará si está formada correctamente.
editar: ah, sí, esta pregunta es un duplicado de esto: ¿Cómo puedo verificar si existe una URL con los validadores de Django?
Regex de validación de url de Django (fuente):
import re
regex = re.compile(
r'^(?:http|ftp)s?://' # http:// or https://
r'(?:(?:[A-Z0-9](?:[A-Z0-9-]0,61[A-Z0-9])?.)+(?:[A-Z]2,6.?|[A-Z0-9-]2,.?)|' #domain...
r'localhost|' #localhost...
r'd1,3.d1,3.d1,3.d1,3)' # ...or ip
r'(?::d+)?' # optional port
r'(?:/?|[/?]S+)$', re.IGNORECASE)
print(re.match(regex, "http://www.example.com") is not None) # True
print(re.match(regex, "example.com") is not None) # False
Comentarios y puntuaciones
Más adelante puedes encontrar las críticas de otros gestores de proyectos, tú además tienes la opción de mostrar el tuyo si lo crees conveniente.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)