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

72 投票
9 回答
74053 浏览
提问于 2025-04-16 06:32

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

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

9 个回答

11

如果你想获取 http(s)://hostname/ 这样的地址,可以使用下面的代码:

request.build_absolute_uri('/')

所有有用的方法都可以在 这里 找到。

86

如果你有一个请求(比如说,这个请求是在一个视图里面),你可以使用 request.get_host() 这个方法,它可以帮你获取完整的地址(包括主机名和端口),而且如果有反向代理的头信息,它也会考虑进去。如果你没有请求的话,你需要在设置里配置一下主机名。单单查看系统的主机名在很多情况下可能会让人困惑,尤其是虚拟主机的情况最为常见。

111

我通常会在 settings.py 文件里放一些像这样的内容:

import socket

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

撰写回答