我有一个appengine webapp,我需要设置HTTP Location变量以重定向到同一个webapp中的另一个页面。为此我需要产生绝对链接。出于便携性原因,我不能直接使用我目前正在使用的域名。
是否可以在python代码中生成托管webapp的域名。
答案 0 :(得分:2)
如果您使用的是webapp框架,则当前网址位于self.request.url
。各种组件在self.request的属性中被分解,记录为here。
答案 1 :(得分:1)
我认为我完全不了解getdomain名称的必要性。但请查看谷歌应用引擎提供的重定向API是否可以完成这项工作。 http://code.google.com/appengine/docs/python/tools/webapp/redirects.html
答案 2 :(得分:1)
这个问题答案很差。您需要域名来生成以下页面:robots.txt,sitemap.xml以及许多不是相对链接的内容。我试过用这个:
from google.appengine.api.app_identity import get_default_version_hostname
host = get_default_version_hostname()
但是...升级到您自己的域名时效果不佳...因为我仍然获得了appspot.com名称。
答案 3 :(得分:0)
如果您的应用使用custom domain name,那么 get_default_version_hostname()将返回 myapp.appspot.com 或 1.default.myapp。 appspot.com 不是 mydomain.com
要在请求中获取域名,请使用:
hostname = self.request.host
根据webob docs:
返回'HTTP_HOST中提供的主机名,并返回到 SERVER_NAME'
这不适用于cron任务或客户端调用 myapp.appspot.com 而不是 mydomain.com 。
另见问题:https://code.google.com/p/googleappengine/issues/detail?id=11993 get_default_version_hostname()在托管VM上的/ _ah / start处理程序中不起作用。解决方法是设置: os.environ ['DEFAULT_VERSION_HOSTNAME'] = os.environ ['GAE_APPENGINE_HOSTNAME']