如何使用Django获取主机服务器的名称?
我需要托管服务器的名称而不是客户端名称?
答案 0 :(得分:71)
我通常会在settings.py
中添加类似内容:
import socket
try:
HOSTNAME = socket.gethostname()
except:
HOSTNAME = 'localhost'
答案 1 :(得分:69)
如果您有请求(例如,这是在视图中),您可以查看request.get_host()
,它会为您提供完整的名称(主机和端口),并考虑反向代理标头(如果有)。如果您没有请求,则应在设置中的某处配置主机名。在很多情况下,查看系统主机名可能不明确,虚拟主机是最常见的。
答案 2 :(得分:6)
只需添加到@Tobu's answer即可。 如果您有一个请求对象,并且想要了解协议(即http / https),则可以使用request.scheme(由@RyneEverett's comment建议)。
或者,您可以(下面的原始答案):
if request.is_secure():
protocol = 'https'
else:
protocol = 'http'
如果请求是使用HTTPS进行的,is_secure()会返回True
。
答案 3 :(得分:4)
尝试os.environ.get('HOSTNAME')
答案 4 :(得分:1)
基本上,您可以在视图/视图集中使用request.get_host()
。返回<ip:port>
答案 5 :(得分:0)
如果有请求对象,则可以使用此功能:
import pandas as pd
dt1 = datetime(2008, 1, 1, 0, 0, 0, 0)
ts1 = pd.Timestamp(dt1, tz='utc').timestamp()
# make sure you get back dt1
datetime.utcfromtimestamp(ts1)
答案 6 :(得分:0)