Jinja2模板引擎

        這裏是 Jinja2通用模板語言的文檔。 Jinja2 在其是一個 Python 2.4 庫以前,被設計 爲是靈活、快速和安全的。若是你接觸過其它的基於文本的模板語言,好比 Smarty 或 Django ,那麼 Jinja2 會讓你有 賓至如歸的感受。Jinja2 經過堅持 Python 原則來保證對設計者和開發者友好,爲模板環 境添加有幫助的功能。css

  

介紹

這裏是 Jinjin2 通用模板語言的文檔。 Jinja2 在其是一個 Python 2.4 庫以前,被設計 爲是靈活、快速和安全的。html

若是你接觸過其它的基於文本的模板語言,好比 Smarty 或 Django ,那麼 Jinja2 會讓你有 賓至如歸的感受。Jinja2 經過堅持 Python 原則來保證對設計者和開發者友好,爲模板環 境添加有幫助的功能。python

預備知識

Jinja2 須要至少 Python 2.4 版原本運行。此外,若是你使用 Python 2.4 ,一個可 以建立 python 擴展的可用的 C 編譯器會爲調試器安裝。git

若是你沒有一個可用的 C 編譯器,而且你視圖安裝帶調試支持的源碼版本,你會獲得一個 編譯器錯誤。 If you don’t have a working C-compiler and you are trying to install the sourcegithub

安裝

條條大路通 Jinja2 。若是你不肯定怎麼作,用 Python egg 或 tarball 吧。api

做爲一個 Python egg (經過 easy_install)

你能夠用 easy_installpip 安裝最新的版本的 Jinja2:安全

sudo easy_install Jinja2
sudo pip install Jinja2

這會在你的 Python 安裝中的 site-packages 目錄安裝一個 Jinja2 egg 。app

(若是你在 Windows 的命令行中安裝,省略 sudo 而且確保你用管理員權限運行 命令行)單元測試

從 tarball 版本安裝

  1. download page 下載最新的 tarball
  2. 解包 tarball
  3. sudo python setup.py install

注意這須要你已經安裝了 setuptools 或 distribute ,首選後者。測試

這會在你 Python 安裝的 site-packages 目錄安裝 Jinja2 。

安裝開發版本

  1. 安裝 git
  2. git clone git://github.com/mitsuhiko/jinja2.git
  3. cd jinja2
  4. ln -s jinja2 /usr/lib/python2.X/site-packages

做爲第四步的替代選擇,你也能夠執行 python setup.py develop ,這會經過 disbribute 在開發模式下安裝包。這樣也有編譯 C 擴展的優點。

加速 MarkupSafe

從 2.5.1 開始, Jinja2 會檢查是否安裝 MarkupSafe 模塊。若是它找到了, 它會用這個模塊的 Markup 類來代替自帶的。 MarkupSafe 替換 Jinja2 中附帶的 老的加速模塊,其優點在於更好的安裝腳本,自動試圖安裝 C 的版本並在不可行時 漂亮地退化到純 Python 實現的版本。

MarkupSafe 的 C 實現要快得多,並推薦用於 Jinja2 自動轉義。

啓用調試支持模塊

默認 Jinja2 不會編譯調試支持模塊。若是你沒有 Python 頭文件或可用的編譯器, 啓用它會失敗。這當你在 Windows 上安裝 Jinja2 是很常見的狀況。

因爲調試模式只對 Python 2.4 是必要的,因此你不須要這麼作,除非你在運行 2.4:

sudo python setup.py --with-debugsupport install

基本 API 使用

本節簡要介紹 Jinja2 模板的 Python API 。

最基本的方式就是經過 Template 建立一個模板並渲染它。 若是你的模板不是從字符串加載,而是文件系統或別的數據源,不管如何這都不 是推薦的方式:

>>> from jinja2 import Template
>>> template = Template('Hello {{ name }}!')
>>> template.render(name='John Doe')
u'Hello John Doe!'

經過建立一個 Template 的實例,你會獲得一個新的模板對象,提供一 個名爲 render() 的方法,該方法在有字典或關鍵字參數時調用 擴充模板。字典或關鍵字參數會被傳遞到模板,即模板「上下文」。

如你所見, Jinja2 內部使用 unicode 而且返回值也是 unicode 字符串。因此確 保你的應用裏也確實使用 unicode 。

實驗性的 Python 3 支持

Jinja 2.3 帶來 Python 3 的實驗性支持。這意味着在新版本上,全部的單元測試 都會經過,可是仍有一些小 bug 和不一致的行爲。若是你發現任何 bug ,請向 Jinja bug tracker 提供反饋。

也請記住本文檔是爲 Python 2 編撰的,你會須要手動把示例代碼轉換爲 Python 3 的語法。

相關文章
相關標籤/搜索