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

发布于 2024-09-30 10:06:47 字数 59 浏览 6 评论 0原文

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

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

How to use Django to get the name for the host server?

I need the name of the hosting server instead of the client name?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

贪恋 2024-10-07 10:06:47

我通常在 settings.py 中放置类似的内容:

import socket

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

I generally put something like this in settings.py:

import socket

try:
    HOSTNAME = socket.gethostname()
except:
    HOSTNAME = 'localhost'
笨笨の傻瓜 2024-10-07 10:06:47

如果您有请求(例如,这是在视图内),您可以查看 request.get_host() 为您提供完整的本地名称(主机和端口),同时考虑反向代理标头(如果有)。如果您没有请求,则应在设置中的某个位置配置主机名。在很多情况下,仅查看系统主机名可能会产生歧义,其中虚拟主机是最常见的。

If you have a request (e.g., this is inside a view), you can look at request.get_host() which gets you a complete locname (host and port), taking into account reverse proxy headers if any. If you don't have a request, you should configure the hostname somewhere in your settings. Just looking at the system hostname can be ambiguous in a lot of cases, virtual hosts being the most common.

你与昨日 2024-10-07 10:06:47

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

request.build_absolute_uri('/')

列出了所有有用的方法此处

If you need to get http(s)://hostname/ you can use the following:

request.build_absolute_uri('/')

All useful methods are listed here

空宴 2024-10-07 10:06:47

只需添加到 @Tobu 的回答即可。
如果你有一个请求对象,并且你想知道协议(即http / https),你可以使用 request.scheme (按照@RyneEverett 的评论)。

或者,您可以执行以下操作(原始答案如下):

if request.is_secure():
    protocol = 'https'
else:
    protocol = 'http'

因为 is_secure() 返回 True

Just add to @Tobu's answer.
If you have a request object, and you would like to know the protocol (i.e. http / https), you can use request.scheme (as suggested by @RyneEverett's comment).

Alternatively, you can do (original answer below):

if request.is_secure():
    protocol = 'https'
else:
    protocol = 'http'

Because is_secure() returns True if request was made with HTTPS.

岁月苍老的讽刺 2024-10-07 10:06:47

尝试 os.environ.get('HOSTNAME')

Try os.environ.get('HOSTNAME')

奶气 2024-10-07 10:06:47

如果你有一个请求对象,你可以使用这个函数:

def get_current_host(self, request: Request) -> str:
    scheme = request.is_secure() and "https" or "http"
    return f'{scheme}://{request.get_host()}/'

If you have a request object, you can use this function:

def get_current_host(self, request: Request) -> str:
    scheme = request.is_secure() and "https" or "http"
    return f'{scheme}://{request.get_host()}/'
离不开的别离 2024-10-07 10:06:47

基本上,您可以在视图/视图集中使用 request.get_host() 。它返回

Basically, You can take with request.get_host() in your view/viewset. It returns <ip:port>

ㄟ。诗瑗 2024-10-07 10:06:47
request.get_raw_uri() # example https://192.168.32.181:10555/
request.get_raw_uri() # example https://192.168.32.181:10555/
若能看破又如何 2024-10-07 10:06:47

为了获取我的 django 服务器名称,我尝试了这个

host = f"{ request.scheme }://{ request.META.get('REMOTE_ADDR') }"

To get my django server name I tried this

host = f"{ request.scheme }://{ request.META.get('REMOTE_ADDR') }"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文