如何使用Django获取主机服务器的名称?
我一般放在settings.py
是这样的:
import socket
try:
HOSTNAME = socket.gethostname()
except:
HOSTNAME = 'localhost'
如果您使用Docker,则您的解决方案不起作用。它将显示容器ID而不是URL。 – 2016-11-18 09:57:42
我的解决方案是在Docker存在之前编写的。抱歉。 – 2016-11-22 08:03:30
正确的解决方案似乎是'request.get_host()' – Dorian 2017-02-14 05:14:23
你试过os.environ.get('HOSTNAME')
?
如果您有一个请求(例如,这是一个视图中),你可以看看request.get_host()
它让你一个完整的LOCNAME(主机和端口),考虑到反向代理标头(如果有的话)。如果您没有请求,则应该在设置中的某处配置主机名。在很多情况下,查看系统主机名可能不明确,虚拟主机是最常见的。
只需添加到@Tobu's answer即可。 如果您有一个请求对象,你想知道的协议(即HTTP/HTTPS),你可以这样做:
if request.is_secure():
protocol = 'https'
else:
protocol = 'http'
因为is_secure()回报True
如果请求被HTTPS建立。
难道你不能只使用[request.scheme](https://docs.djangoproject.com/en/dev/ref/request-response/#django.http .HttpRequest.scheme)? – 2015-07-21 20:28:09
@RyneEverett谢谢。不知道(facepalm)。 – azalea 2015-07-21 20:43:00
我不敢相信这个过程在Dj中如此复杂。 – zallarak 2014-12-17 01:29:09