Django=を使用してホストサーバーの名前を取得する方法は?
クライアント名の代わりにホスティングサーバーの名前が必要ですか?
私は通常、settings.py
に次のようなものを入れます。
import socket
try:
HOSTNAME = socket.gethostname()
except:
HOSTNAME = 'localhost'
リクエストがある場合(たとえば、これはビュー内にあります)、 request.get_Host()
を見ると、逆プロキシを考慮して完全なlocname(ホストとポート)を取得できますヘッダーがある場合。リクエストがない場合は、設定のどこかにホスト名を設定する必要があります。多くの場合、システムのホスト名を見るだけではあいまいになり、仮想ホストが最も一般的です。
@ Tobu's answer に追加するだけです。要求オブジェクトがあり、プロトコル(つまり、http/https)を知りたい場合は、 request.scheme を使用できます( @ RyneEverettのコメント で提案されているとおり) 。
または、以下を行うこともできます(以下の元の答え):
if request.is_secure():
protocol = 'https'
else:
protocol = 'http'
HTTPSでリクエストが行われた場合、 is_secure() はTrue
を返すためです。
os.environ.get('HOSTNAME')
を試してください
基本的に、ビュー/ビューセットでrequest.get_Host()
を使用できます。 <ip:port>
を返します