Как использовать Django для получения имени хост-сервера?
Как использовать Django для получения имени хост-сервера?
Мне нужно имя хост-сервера вместо имени клиента?
4 ответов
Я обычно помещаю что-то вроде этого в settings.py
:
import socket
try:
HOSTNAME = socket.gethostname()
except:
HOSTNAME = 'localhost'
Если у вас есть запрос (например, это внутри вида), вы можете посмотреть request.get_host()
который получает вам полное имя locname (хост и порт), принимая во внимание обратные заголовки прокси, если таковые имеются. Если у вас нет запроса, вы должны настроить имя где-то в настройках. Просто глядя на имя хоста системы может быть неоднозначным во многих случаях, виртуальные хосты являются наиболее распространенными.
добавить @Тобу-х. Если у вас есть объект запроса, и вы хотели бы знать протокол (например, http / https), вы можете использовать запрос.схема (как было предложено комментарий@RyneEverett).
кроме того, вы можете сделать (оригинальный ответ ниже):
if request.is_secure():
protocol = 'https'
else:
protocol = 'http'
, потому что is_secure () возвращает True
если запрос был сделан с HTTPS.