我的GAE项目有如下设置:
/static/.* --> images, css, js
/rest/.* --> a script handling all rest resources using webapp2 handlers
我想使用jinja2模板基本上创建一些html页面,例如使用模板继承jinja2提供。或多或少做服务器端包括。
因此所有其他传入请求应直接呈现模板,例如:
/ --> index template
/index.html --> index template
/some/path/to/a/page.html --> /some/path/to/a/page template
/some/path/to/a/page --> /some/path/to/a/page template
我想匹配.html和没有扩展名的路径。
我不想为我的所有路径创建路由,只是一些可以处理此问题的智能脚本。这有可能吗?
答案 0 :(得分:4)
是的,你可以。但仍然需要单一的处理程序:
# app.yaml
- url: /rest/.*
script: main.app
# main.py
class PageHandler(webapp2.RequestHandler):
def get(self, page):
if not page.endswith('.html'):
page += '.html'
self.response.write(self.jinja2.render_template(page))
app = webapp2.WSGIApplication([
webapp2.RedirectRoute('/rest/<page>', PageHandler, name='page'),
], debug=True)
然后,您只需将您的网页链接到/rest/index.html或/ rest / path /链接到/ page
但是如果你纯粹将它用于静态文件,那么仍然会使用实例来生成这些页面,如果你愿意,你可以使用我的app-engine-static github项目。它基本上是一个项目,可以帮助您使用jinja2构建动态站点,然后生成静态文件,这将与app引擎的内置cdn一起使用,而不是消耗实例时间: http://blog.altlimit.com/2013/08/host-static-website-on-google-app.html