![](/img/trans.png)
[英]Sending a URL in a GET request to a Python server on Google App Engine
[英]Getting the Server URL in Google App Engine using python
如何讓App Engine生成當前正在運行的服務器的URL?
如果應用程序在開發服務器上運行,則應返回
http://localhost:8080/
如果該應用程序正在Google的服務器上運行,則應返回
http://application-name.appspot.com
您可以通過self.request.url
從Webapp處理程序中獲取用於發出當前請求的URL,也可以使用self.request.environ
字典將其組合在一起(您可以在WebOb文檔中閱讀-請求從webob繼承)
您不能“獲取服務器的URL”本身,因為可以使用許多URL指向同一實例。
如果您的目的只是發現您是否正在開發或生產中,請使用:
'Development' in os.environ['SERVER_SOFTWARE']
這是一個替代答案。
from google.appengine.api import app_identity
server_url = app_identity.get_default_version_hostname()
在開發應用服務器上,這將顯示:
本地主機:8080
並在appengine上
your_app_id.appspot.com
如果您使用webapp2作為框架,則很可能已經在Web應用程序中使用了URI路由。
http://webapp2.readthedocs.io/en/latest/guide/routing.html
app = webapp2.WSGIApplication([
webapp2.Route('/', handler=HomeHandler, name='home'),
])
使用webapp2.uri_for()
構建URI時,只需傳遞_full=True
屬性即可根據當前運行時環境生成包括當前域,端口和協議的絕對URI。
uri = uri_for('home')
# /
uri = uri_for('home', _full=True)
# http://localhost:8080/
# http://application-name.appspot.com/
# https://application-name.appspot.com/
# http://your-custom-domain.com/
此函數可以在您的Python代碼中使用,也可以直接從模板引擎中使用(如果您注冊了它)-非常方便。
檢查API參考中的webapp2.Router.build() ,以獲取有關用於構建URI的參數的完整說明。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.