代码之家  ›  专栏  ›  技术社区  ›  Gelatin

如何在AppEngine中获取基URI?

  •  9
  • Gelatin  · 技术社区  · 14 年前

    例如

    http://example.appspot.com/
    2 回复  |  直到 14 年前
        1
  •  5
  •   Alex Martelli    14 年前

    正确的解析方法 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'

        2
  •  2
  •   Jason Hall    14 年前

    如果你只想找到你的应用程序ID,你可以从 environment 无需解析当前URL。环境变量为 APPLICATION_ID

    CURRENT_VERSION_ID ),身份验证域(它将让您知道您是否正在二级域名, AUTH_DOMAIN )以及您是在本地开发服务器上运行还是在生产环境中运行( SERVER_SOFTWARE ).

    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]
    

    编辑: 验证域 包含自定义域,不需要包含应用程序ID。

    这将返回当前版本的基本URL,即使您没有访问当前版本,或者使用如下URL访问当前版本 http://current-version.latest.app_id.appspot.com (与URL解析方法不同)