Comment utiliser Django pour obtenir le nom du serveur hôte?Comment utiliser Django pour obtenir le nom du serveur hôte?
J'ai besoin du nom du serveur d'hébergement au lieu du nom du client?
Comment utiliser Django pour obtenir le nom du serveur hôte?Comment utiliser Django pour obtenir le nom du serveur hôte?
J'ai besoin du nom du serveur d'hébergement au lieu du nom du client?
En général, je mis quelque chose comme ça dans settings.py
:
import socket
try:
HOSTNAME = socket.gethostname()
except:
HOSTNAME = 'localhost'
Votre solution ne fonctionne pas, si vous utilisez Docker. Il montrera l'ID du conteneur au lieu de l'URL. –
Ma solution a été écrite avant l'existence de Docker. Pardon. –
La solution correcte semble être 'request.get_host()' – Dorian
Avez-vous essayé os.environ.get('HOSTNAME')
?
Si vous avez une demande (par exemple, c'est à l'intérieur d'une vue), vous pouvez regarder request.get_host()
que vous obtient un LOCNAME complet (hôte et le port), en tenant compte des en-têtes de proxy inverse le cas échéant. Si vous n'avez pas de demande, vous devez configurer le nom d'hôte quelque part dans vos paramètres. Le simple fait de regarder le nom d'hôte du système peut être ambigu dans beaucoup de cas, les hôtes virtuels étant les plus courants.
Ajoutez simplement à @Tobu's answer. Si vous avez un objet de requête, et que vous souhaitez connaître le protocole (à savoir http/https), vous pouvez faire:
if request.is_secure():
protocol = 'https'
else:
protocol = 'http'
Parce que is_secure() retours True
si la demande a été faite avec le protocole HTTPS.
Vous ne pourriez pas utiliser [request.scheme] (https://docs.djangoproject.com/en/dev/ref/request-response/#django.http .HttpRequest.scheme)? –
@RyneEverett merci. Je ne le savais pas (facepalm). – azalea
Je ne peux pas croire que ce processus est si compliqué dans Dj. – zallarak