web-dev-qa-db-fra.com

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?

43
user469652

Je mets généralement quelque chose comme ceci dans settings.py:

import socket

try:
    HOSTNAME = socket.gethostname()
except:
    HOSTNAME = 'localhost'
68
Craig Trader

Si vous avez une requête (par exemple, celle-ci se trouve dans une vue), vous pouvez consulter request.get_Host() qui vous procure un nom complet (hôte et 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. Regarder le nom d'hôte du système peut être ambigu dans de nombreux cas, les hôtes virtuels étant les plus courants.

68
Tobu

Ajoutez simplement à @ La réponse de Tobu . Si vous avez un objet de requête et souhaitez connaître le protocole (http/https), vous pouvez utiliser request.schemeCommentaire de @ RyneEverett ).

Sinon, vous pouvez faire (réponse originale ci-dessous):

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

Parce que is_secure () renvoie True si la demande a été effectuée avec HTTPS.

5
azalea

Essayez os.environ.get('HOSTNAME') 

4
Ankit Jaiswal

En gros, vous pouvez prendre avec request.get_Host() dans votre vue/viewet. Il retourne <ip:port> 

0
direwolf