如何用Python/GAE获取当前域名?

12 投票
3 回答
6972 浏览
提问于 2025-04-16 16:42

当前的 URL 是

http://myapp.appspot.com/something/<user-id>

或者

http://127.0.0.1:8080/something/<user-id>

在我的 Python 代码中,如何获取 http://myapp.appspot.com/http://127.0.0.1:8080/ 呢?这对于动态生成链接是必要的,比如说,生成 http://myapp.appspot.com/somethingelse 这样的链接。

self.request.path 会返回整个路径。

3 个回答

0

如果 self.request.path 返回的是完整的路径,那你是不是可以直接这样做:

import urlparse

def get_domain(url):
    return urlparse.urlparse(url).netloc
>>> get_domain("http://myapp.appspot.com/something/")
'myapp.appspot.com'
1

我觉得你想要的是 app_identity.get_default_version_hostname()

如果你的应用是通过一个自定义域名提供服务的,可能需要获取完整的主机名部分。你可以使用 app_identity.get_default_version_hostname() 这个方法来做到这一点。

这段代码:

logging.info(app_identity.get_default_version_hostname())

在开发服务器上会打印出 localhost:8080

15

self.request.host_url

这个链接指向的是一个关于 Python 中 WebOb 库的文档。在这里,`self.request.host_url` 是一个用来获取当前请求的主机地址和端口号的属性。简单来说,它可以告诉你用户访问的网页是在哪个地址上,比如说是 www.example.com,或者是 localhost(本地服务器)。这个信息在处理网络请求时非常有用。

撰写回答