如何在用Python编写的Google AppEngine应用程序中获取基本URI?我正在使用webapp框架。
e.g。
http://example.appspot.com/
答案 0 :(得分:5)
解析self.request.url
的正确方法不是使用正则表达式,而是使用Python标准库的urlparse模块:
import urlparse
...
o = urlparse.urlparse(self.request.url)
对象o
将是ParseResult
类的实例,其中包含字符串值字段,例如o.scheme
(可能是http
;-)和o.netloc
(在你的情况下'example.appspot.com'
)。您可以使用同一模块中的urlparse.urlunparse函数将一些字符串重新组合在一起,例如
s = urlparse.urlunparse((o.scheme, o.netloc, '', '', '', ''))
在这种情况下,会在s
中为您提供字符串'http://example.appspot.com'
。
答案 1 :(得分:2)
如果您只想查找自己的应用ID,可以从environment获取该ID,而无需解析当前网址。环境变量为APPLICATION_ID
您还可以使用此功能查找当前版本(CURRENT_VERSION_ID
),auth域名(告知您是否在appspot.com上运行,AUTH_DOMAIN
)以及是否在本地开发服务器或生产中运行(SERVER_SOFTWARE
)。
为了获得完整的基本URL,请尝试以下方法:
import os
def get_base_url():
if os.environ[AUTH_DOMAIN] == "gmail.com":
app_id = os.environ[APPLICATION_ID]
return "http://" + app_id + ".appspot.com"
else:
return "http://" + os.environ[AUTH_DOMAIN]
修改 AUTH_DOMAIN
包含自定义域,无需包含应用ID。
即使您没有访问当前版本,也会返回当前版本的基本URL,或者使用http://current-version.latest.app_id.appspot.com
之类的URL访问当前版本(与URL解析方法不同)