Как использовать Django для получения имени хост-сервера?

Как использовать Django для получения имени хост-сервера?

Мне нужно имя хост-сервера вместо имени клиента?

4 ответов


Я обычно помещаю что-то вроде этого в settings.py:

import socket

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

Если у вас есть запрос (например, это внутри вида), вы можете посмотреть request.get_host() который получает вам полное имя locname (хост и порт), принимая во внимание обратные заголовки прокси, если таковые имеются. Если у вас нет запроса, вы должны настроить имя где-то в настройках. Просто глядя на имя хоста системы может быть неоднозначным во многих случаях, виртуальные хосты являются наиболее распространенными.


попробовать os.environ.get('HOSTNAME')


добавить @Тобу-х. Если у вас есть объект запроса, и вы хотели бы знать протокол (например, http / https), вы можете использовать запрос.схема (как было предложено комментарий@RyneEverett).

кроме того, вы можете сделать (оригинальный ответ ниже):

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

, потому что is_secure () возвращает True если запрос был сделан с HTTPS.