python中模板引擎Jinja2學習

2021-08-28 04:12:28 字數 1127 閱讀 9498

1.jinja2

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

2.jinja2入門舉例

(1)乙個簡單的例子

from jinja2 import template

template = template('hello }!')

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)模板間繼承

更換Django預設的模板引擎為jinja2

作業系統 fedora24 python版本 3.5 django版本 1.11.1 jinja2版本 2.9.6 先來談談django的模板引擎,找了下,並沒有乙個確定的名字,就簡單的叫django templates language dtl 中文就叫django模板語言。使用中,大家會發現很多...

Python學習 Flask框架和jinja2模板

from flask import flask from flask import request defhome return def signin form return defsignin 需要從request物件讀取表單內容 if request.form username admin an...

python中模板引擎Jinja2學習

1.jinja2 jinja2是基於python的模板引擎,功能比較類似於於php的smarty,j2ee的freemarker和velocity。它能完全支援unicode,並具有整合的沙箱執行環境,應用廣泛。使用jinja2的方式一般是,先建立乙個包括 或等特殊符號的模板檔案,然後用jinja的...