Как использовать Django, чтобы получить имя для хост-сервера? - PullRequest
47 голосов
/ 04 ноября 2010

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

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

Ответы [ 5 ]

74 голосов
/ 05 ноября 2010

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

import socket

try:
    HOSTNAME = socket.gethostname()
except:
    HOSTNAME = 'localhost'
70 голосов
/ 03 января 2012

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

6 голосов
/ 10 декабря 2014

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

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

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

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

4 голосов
/ 04 ноября 2010

Попробуйте os.environ.get('HOSTNAME')

1 голос
/ 15 января 2019

В основном, вы можете взять с request.get_host() в вашем представлении / viewset Возвращает <ip:port>

...