鍍金池/ 教程/ Python/ 介紹
提示和技巧
從其它的模板引擎切換
集成
沙箱
擴(kuò)展
常見問題
介紹
模板設(shè)計者文檔
API

介紹

這里是 Jinjin2 通用模板語言的文檔。 Jinja2 在其是一個 Python 2.4 庫之前,被設(shè)計 為是靈活、快速和安全的。

如果你接觸過其它的基于文本的模板語言,比如 Smarty 或 Django ,那么 Jinja2 會讓你有 賓至如歸的感覺。Jinja2 通過堅持 Python 原則來保證對設(shè)計者和開發(fā)者友好,為模板環(huán) 境添加有幫助的功能。

預(yù)備知識

Jinja2 需要至少 Python 2.4 版本來運(yùn)行。此外,如果你使用 Python 2.4 ,一個可 以創(chuàng)建 python 擴(kuò)展的可用的 C 編譯器會為調(diào)試器安裝。

如果你沒有一個可用的 C 編譯器,并且你視圖安裝帶調(diào)試支持的源碼版本,你會得到一個 編譯器錯誤。 If you don't have a working C-compiler and you are trying to install the source

安裝

條條大路通 Jinja2 。如果你不確定怎么做,用 Python egg 或 tarball 吧。

作為一個 Python egg (通過 easy_install)

你可以用 [easy_install][1] 或 [pip][2] 安裝最新的版本的 Jinja2:

    sudo easy_install Jinja2
    sudo pip install Jinja2

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

(如果你在 Windows 的命令行中安裝,省略 sudo 并且確保你用管理員權(quán)限運(yùn)行 命令行)

從 tarball 版本安裝

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

注意這需要你已經(jīng)安裝了 setuptools 或 [distribute][4] ,首選后者。

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

安裝開發(fā)版本

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

作為第四步的替代選擇,你也可以執(zhí)行 python setup.py develop ,這會通過 disbribute 在開發(fā)模式下安裝包。這樣也有編譯 C 擴(kuò)展的優(yōu)勢。

加速 MarkupSafe

從 2.5.1 開始, Jinja2 會檢查是否安裝 [MarkupSafe][6] 模塊。如果它找到了, 它會用這個模塊的 Markup 類來代替自帶的。 MarkupSafe 替換 Jinja2 中附帶的 老的加速模塊,其優(yōu)勢在于更好的安裝腳本,自動試圖安裝 C 的版本并在不可行時 漂亮地退化到純 Python 實(shí)現(xiàn)的版本。

MarkupSafe 的 C 實(shí)現(xiàn)要快得多,并推薦用于 Jinja2 自動轉(zhuǎn)義。

啟用調(diào)試支持模塊

默認(rèn) Jinja2 不會編譯調(diào)試支持模塊。如果你沒有 Python 頭文件或可用的編譯器, 啟用它會失敗。這當(dāng)你在 Windows 上安裝 Jinja2 是很常見的情況。

由于調(diào)試模式只對 Python 2.4 是必要的,所以你不需要這么做,除非你在運(yùn)行 2.4:

    sudo python setup.py --with-debugsupport install

基本 API 使用

本節(jié)簡要介紹 Jinja2 模板的 Python API 。

最基本的方式就是通過 [Template][7] 創(chuàng)建一個模板并渲染它。 如果你的模板不是從字符串加載,而是文件系統(tǒng)或別的數(shù)據(jù)源,無論如何這都不 是推薦的方式:

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

通過創(chuàng)建一個 [Template][7] 的實(shí)例,你會得到一個新的模板對象,提供一 個名為 [render()][8] 的方法,該方法在有字典或關(guān)鍵字參數(shù)時調(diào)用 擴(kuò)充模板。字典或關(guān)鍵字參數(shù)會被傳遞到模板,即模板"上下文"。

如你所見, Jinja2 內(nèi)部使用 unicode 并且返回值也是 unicode 字符串。所以確 保你的應(yīng)用里也確實(shí)使用 unicode 。

實(shí)驗(yàn)性的 Python 3 支持

Jinja 2.3 帶來 Python 3 的實(shí)驗(yàn)性支持。這意味著在新版本上,所有的單元測試 都會通過,但是仍有一些小 bug 和不一致的行為。如果你發(fā)現(xiàn)任何 bug ,請向 [Jinja bug tracker][9] 提供反饋。

也請記住本文檔是為 Python 2 編撰的,你會需要手動把示例代碼轉(zhuǎn)換為 Python 3 的語法。

上一篇:擴(kuò)展下一篇:API