如何在AppEngine中获取基URI?

时间:2010-09-12 23:11:17

标签: python google-app-engine

如何在用Python编写的Google AppEngine应用程序中获取基本URI?我正在使用webapp框架。

e.g。

http://example.appspot.com/

2 个答案:

答案 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解析方法不同)