1. 程式人生 > >python中模板引擎Jinja2學習

python中模板引擎Jinja2學習

1.Jinja2

       Jinja2是基於python的模板引擎,功能比較類似於於PHP的smarty,J2ee的Freemarker和velocity。 它能完全支援unicode,並具有整合的沙箱執行環境,應用廣泛。使用Jinja2的方式一般是,先建立一個包括{{ }}或{% %}等特殊符號的模板檔案,然後用Jinja的模板物件載入,然後變數值對該模板中的變數進行賦值。

2.Jinja2入門舉例

(1)一個簡單的例子

  1. from jinja2 import Template
    
    template = Template('Hello {{ name }}!')
    
    print template.render(name='World')
    
    

    程式輸出結果為:

  2. [localhost ~]$ python test.py
    
    Hello World!

(2)一個稍複雜的例子

        Jinja2 使用一個名為 Environment 的中心物件。這個類的例項用於儲存配 置、全域性物件,並用於從檔案系統或其它位置載入模板。即使你通過:class:Template 類的建構函式用字串建立模板,也會為你自動建立一個環境,儘管是共享的。大多數應用在應用初始化時建立一個 Environment 物件,並用它載入模板。 

  1. 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