2011-04-30 66 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