2011-04-30 101 views
11

当前的URL是如何使用Python/GAE获取当前域名?

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返回整个路径。

+2

我正在创建RSS。相对URL不会在那里工作。 – 2011-04-30 15:13:47

回答

13
+4

谢谢,它运作良好。我发现的另一个选择是使用'self.request.environ ['HTTP_HOST']'。 – 2011-04-30 13:46:58

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' 
+0

它返回空字符串(至少在本地使用时) – 2011-04-30 13:46:20

+0

在域名前需要有一个'//',否则就认为它是一个相对url。 – Acorn 2011-04-30 14:02:24

1

我想你想app_identity.get_default_version_hostname()

如果应用程序是从自定义域提供的,则可能需要 检索整个主机名组件。您可以使用 app_identity.get_default_version_hostname()方法执行此操作。

此代码:开发服务器上 logging.info(app_identity.get_default_version_hostname())

打印localhost:8080