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

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

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

Ответ 1

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

import socket

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

Ответ 2

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

Ответ 3

Вы попробовали os.environ.get('HOSTNAME')?

Ответ 4

Просто добавьте @Tobu answer. Если у вас есть объект запроса и вы хотите узнать протокол (т.е. Http/https), вы можете сделать:

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

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