python中模板引擎Jinja2學習
阿新 • • 發佈:2018-12-10
1.Jinja2
Jinja2是基於python的模板引擎,功能比較類似於於PHP的smarty,J2ee的Freemarker和velocity。 它能完全支援unicode,並具有整合的沙箱執行環境,應用廣泛。使用Jinja2的方式一般是,先建立一個包括{{ }}或{% %}等特殊符號的模板檔案,然後用Jinja的模板物件載入,然後變數值對該模板中的變數進行賦值。
2.Jinja2入門舉例
(1)一個簡單的例子
-
from jinja2 import Template template = Template('Hello {{ name }}!') print template.render(name='World')
程式輸出結果為:
-
[localhost ~]$ python test.py Hello World!
(2)一個稍複雜的例子
Jinja2 使用一個名為 Environment 的中心物件。這個類的例項用於儲存配 置、全域性物件,並用於從檔案系統或其它位置載入模板。即使你通過:class:Template 類的建構函式用字串建立模板,也會為你自動建立一個環境,儘管是共享的。大多數應用在應用初始化時建立一個 Environment 物件,並用它載入模板。
-
from jinja2 import Environment from jinja2 import FileSystemLoader env = Environment(loader=PackageLoader('/path/to/templates', 'utf-8')) template = env.get_template('mytemplate.html') template.render(the='variables', go='here')
備註:這裡FileSystemLoader是一個模板載入器中的一種,它表示從指定的資料夾中載入模板檔案。另外,Jinja2還有很多其他的內建模板,比如PackageLoader、MoudleLoader等等。當然使用者還可以自定義模板載入器(只需要繼承BaseLoader並重載get_source函式)
3.Jinja2的高階特性
(1)模板間繼承
學習資料參考於:
http://docs.jinkan.org/docs/jinja2/
http://www.wklken.me/posts/2013/12/21/python-template-jinja2.html