En mi aplicación Django, necesito obtener el nombre de host del referente request.META.get('HTTP_REFERER')
junto con su protocolo para que de URL como:
- https://docs.google.com/spreadsheet/ccc?key=blah-blah-blah-blah#gid=1
- /programming/1234567/blah-blah-blah-blah
- http://www.example.com
- https://www.other-domain.com/whatever/blah/blah/?v1=0&v2=blah+blah ...
Debería obtener:
- https://docs.google.com/
- https://stackoverflow.com/
- http://www.example.com
- https://www.other-domain.com/
Revisé otras preguntas relacionadas y encontré sobre urlparse, pero eso no funcionó ya que
>>> urlparse(request.META.get('HTTP_REFERER')).hostname
'docs.google.com'
/
al tercer ejemplohttp://www.domain.com
, pero creo que esto podría ser una deficiencia de la pregunta, no de la respuesta.urlparse.urlparse()
devuelve un resultado con nombre de tupla; podría usar{uri.scheme}://{uri.netloc}/'.format(uri=parsed_uri)
para facilitar la lectura.netloc
que no es un dominio: intenteurlparse.urlparse('http://user:pass@example.com:8080')
y encuentre que le da partes como'user:pass@'
y':8080'
from urllib.parse import urlparse