web-dev-qa-db-ja.com

Django=を使用してホストサーバーの名前を取得する方法は?

Django=を使用してホストサーバーの名前を取得する方法は?

クライアント名の代わりにホスティングサーバーの名前が必要ですか?

47
user469652

私は通常、settings.pyに次のようなものを入れます。

import socket

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

リクエストがある場合(たとえば、これはビュー内にあります)、 request.get_Host() を見ると、逆プロキシを考慮して完全なlocname(ホストとポート)を取得できますヘッダーがある場合。リクエストがない場合は、設定のどこかにホスト名を設定する必要があります。多くの場合、システムのホスト名を見るだけではあいまいになり、仮想ホストが最も一般的です。

72
Tobu

@ Tobu's answer に追加するだけです。要求オブジェクトがあり、プロトコル(つまり、http/https)を知りたい場合は、 request.scheme を使用できます( @ RyneEverettのコメント で提案されているとおり) 。

または、以下を行うこともできます(以下の元の答え):

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

HTTPSでリクエストが行われた場合、 is_secure()Trueを返すためです。

7
azalea

os.environ.get('HOSTNAME')を試してください

4
Ankit Jaiswal

基本的に、ビュー/ビューセットでrequest.get_Host()を使用できます。 <ip:port>を返します

1
direwolf