2010-11-04 25 views

Respuesta

53

por lo general poner algo como esto en settings.py:

import socket 

try: 
    HOSTNAME = socket.gethostname() 
except: 
    HOSTNAME = 'localhost' 
+7

Su solución no funciona, si usa Docker. Mostrará la ID del contenedor en lugar de la URL. –

+134

Mi solución fue escrita antes de que existiera Docker. Lo siento. –

+2

La solución correcta parece ser 'request.get_host()' – Dorian

4

¿Has probado os.environ.get('HOSTNAME')?

57

Si usted tiene una petición (por ejemplo, esto es dentro de una vista), se puede ver en request.get_host() que se consigue un LOCNAME completa (host y el puerto), teniendo en cuenta los encabezados de proxy inverso si los hay. Si no tiene una solicitud, debe configurar el nombre de host en su configuración. El simple hecho de observar el nombre de host del sistema puede ser ambiguo en muchos casos, siendo los hosts virtuales los más comunes.

3

Simplemente agregue a @Tobu's answer. Si usted tiene un objeto de la petición, y que le gustaría saber el protocolo (es decir, http/https), que puede hacer:

if request.is_secure(): 
    protocol = 'https' 
else: 
    protocol = 'http' 

Debido is_secure() vuelve True si la solicitud se hizo con HTTPS.

+6

¿No podría simplemente usar [request.scheme] (https://docs.djangoproject.com/en/dev/ref/request-response/#django.http .HttpRequest.scheme)? –

+2

@RyneEverett gracias. no lo sabía (facepalm). – azalea

Cuestiones relacionadas