關於 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

留言

熱門文章