Come utilizzare Django per ottenere il nome per il server host?Come utilizzare Django per ottenere il nome per il server host?
Ho bisogno del nome del server di hosting invece del nome del cliente?
Come utilizzare Django per ottenere il nome per il server host?Come utilizzare Django per ottenere il nome per il server host?
Ho bisogno del nome del server di hosting invece del nome del cliente?
io generalmente messo qualcosa di simile in settings.py
:
import socket
try:
HOSTNAME = socket.gethostname()
except:
HOSTNAME = 'localhost'
La tua soluzione non funziona se usi Docker. Mostrerà l'ID del contenitore invece dell'URL. –
La mia soluzione è stata scritta prima che il Docker esistesse. Scusate. –
La soluzione corretta sembra essere 'request.get_host()' – Dorian
Hai provato os.environ.get('HOSTNAME')
?
Se si dispone di una richiesta (ad esempio, questo è all'interno di una vista), si può guardare a request.get_host()
cui si ottiene un LOCNAME completa (host e la porta), tenendo conto delle eventuali intestazioni proxy inverse. Se non hai una richiesta, dovresti configurare il nome host da qualche parte nelle tue impostazioni. Solo guardando il nome host del sistema può essere ambiguo in molti casi, gli host virtuali sono i più comuni.
Basta aggiungere a @Tobu's answer. Se si dispone di un oggetto di richiesta, e si vorrebbe sapere il protocollo (vale a dire http/https), si può fare:
if request.is_secure():
protocol = 'https'
else:
protocol = 'http'
Perché is_secure() rendimenti True
se richiesta è stata fatta con HTTPS.
Non potresti semplicemente usare [request.scheme] (https://docs.djangoproject.com/en/dev/ref/request-response/#django.http .HttpRequest.scheme)? –
@RyneEverett grazie. non lo sapevo (facepalm). – azalea
Non posso credere che questo processo sia così complicato in Dj. – zallarak