關於 jinja2 該怎麼設定樣板檔路徑
最近為了要遷移到 gae python 2.7 環境在摸 jinja2...
他的用法和 python 2.5 環境提供的 template engine 略有不同
其中之一大不同是需要額外指定樣板檔搜尋的路徑
否則會一直報錯(TemplateNotFound)
經歷了一個多小時的嘗試, 發現原來是這樣的
在 jinja2 初始化時要指定一個參數 FileSystemLoader
這個東西就會告訴 jinja2 要去哪裡找樣板檔
接收的是一個資料夾名稱, 是以專案的根目錄為基底去延伸的
以下例來說, 它就會去 /template 資料夾中找樣板檔
JINJA_ENVIRONMENT = jinja2.Environment(
loader=jinja2.FileSystemLoader('template'),
extensions=['jinja2.ext.autoescape'],
autoescape=True)
template_path = 'index.html'
template = JINJA_ENVIRONMENT.get_template(template_path)
注意, 如果這個 loader 的路徑寫不對, 那麼它就找不到樣板檔
就算你 template 資料夾已經開好了, 裡面確實有 index.html 這個檔案也一樣
它會完全依照你給loader 的路徑去查找
只要都設定正確... 一個 render 好的 html 就出來了!
參考資料: http://stackoverflow.com/questions/9641317/jinja2-filesystemloader-load-all-subdirectories
他的用法和 python 2.5 環境提供的 template engine 略有不同
其中之一大不同是需要額外指定樣板檔搜尋的路徑
否則會一直報錯(TemplateNotFound)
經歷了一個多小時的嘗試, 發現原來是這樣的
在 jinja2 初始化時要指定一個參數 FileSystemLoader
這個東西就會告訴 jinja2 要去哪裡找樣板檔
接收的是一個資料夾名稱, 是以專案的根目錄為基底去延伸的
以下例來說, 它就會去 /template 資料夾中找樣板檔
JINJA_ENVIRONMENT = jinja2.Environment(
loader=jinja2.FileSystemLoader('template'),
extensions=['jinja2.ext.autoescape'],
autoescape=True)
template_path = 'index.html'
template = JINJA_ENVIRONMENT.get_template(template_path)
注意, 如果這個 loader 的路徑寫不對, 那麼它就找不到樣板檔
就算你 template 資料夾已經開好了, 裡面確實有 index.html 這個檔案也一樣
它會完全依照你給loader 的路徑去查找
只要都設定正確... 一個 render 好的 html 就出來了!
參考資料: http://stackoverflow.com/questions/9641317/jinja2-filesystemloader-load-all-subdirectories
留言
張貼留言