如何使用Django获取主机服务器的名称?

时间:2010-11-04 04:56:16

标签: python django url host

如何使用Django获取主机服务器的名称?

我需要托管服务器的名称而不是客户端名称?

7 个答案:

答案 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)

如果您需要获取http(s)://hostname/,则可以使用以下内容:

request.build_absolute_uri('/')

列出了所有有用的方法here