2013-08-30 63 views
0

我的GAE項目有一個設置,如:如何直接呈現模板,無需處理程序

/static/.* --> images, css, js 
/rest/.* --> a script handling all rest resources using webapp2 handlers 

我想使用Jinja2的模板基本上創建一些HTML頁面,但如使用jinja2提供的模板繼承。或多或少地做服務器端包括。

因此,所有其他傳入請求應直接呈現模板,e.g:

/ --> 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和路徑沒有擴展匹配。

我不想爲所有路徑創建路由,只需要一些可以處理這個問題的智能腳本。這可能嗎?

回答

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 /路徑/到/頁

鏈接頁面但是,如果你單純使用本作靜態文件,這仍然會使用一個實例來生成這些頁面,如果你喜歡,你可以使用我的app-engine-static github項目。這基本上是一個項目,可以幫助您使用jinja2生成動態網站,然後生成靜態文件,這將與應用引擎的內置cdn一起使用,而不會消耗實例小時數: http://blog.altlimit.com/2013/08/host-static-website-on-google-app.html

+0

感謝分享這個,我也會有一個看看你的應用程序引擎靜態項目,看看什麼最適合我的需求。 –