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