Jinja2 與 Jinja1 在 API 使用和模板語法上最為兼容。下面的列表解釋了 Jinja1 和 Jinja2 的區別。
### API[](http://docs.jinkan.org/docs/jinja2/switching.html#api "Permalink to this headline")
加載器
Jinja2 使用不同的加載器 API 。因為模板的內部表示更改,不再支持 memcached 這樣的外部緩存系統。模板的內存開銷與常規的 Python 模塊相當,外部緩存不能 帶來優勢。如果你以前使用了一個自定義的加載器,請閱讀?[*loader API*](http://docs.jinkan.org/docs/jinja2/api.html#loaders)?部分。
從字符串加載模板
在過去,在默認環境配置中使用?jinja.from_string?從字符串生成模板是可能 的。 Jinja2 提供了一個?Template?類來用于做同樣的事情,但是需要 可選的額外配置。
自動 Unicode 轉換
Jinja1 執行把字節串從一個給定編碼到 unicode 對象的自動轉換。這個轉換不再 被實現,因為它與大多數使用常規 Python ASCII 字節串到 Unicode 轉換的庫不 一致。一個由 Jinja2 驅動的應用?*必須*?在內部的每個地方都使用 unicode 或 確保 Jinja2 只會被傳遞 unicode 字符串。
i18n
Jinja1 使用自定義的國際化翻譯器。 i18n 現在作為 Jinja2 的一個擴展,并且 使用更簡單、更 gettext 友好的接口,并且支持 babel 。更多細節見?[*i18n 擴展*](http://docs.jinkan.org/docs/jinja2/extensions.html#i18n-extension)?。
內部方法
Jinja1 在環境對象上暴露了諸如?call_function?、?get_attribute?等內部 方法。當它們被標記為一個內部方法,則可以覆蓋它們。 Jinja2 并沒有等價的 方法。
沙箱
Jinja1 默認運行沙箱模式。實際上只有少數應用使用這一特性,所以這在 Jinja2 中是可選的。更多關于上下執行的細節見?SandboxedEnvironment?。
上下文
Jinja1 有一個上下文棧存儲傳遞到環境的變量。在 Jinja2 中有一個類似的 對象,但它不允許修改也不是單例的。由于繼承是動態的,現在當模板求值時 可能存在多個上下文對象。
過濾器和測試
過濾器和測試現在是常規的函數。不再允許使用工廠函數,且也沒有必要。
### 模板[](http://docs.jinkan.org/docs/jinja2/switching.html#id2 "Permalink to this headline")
Jinja2 與 Jinja1 的語法幾乎相同。區別是,現在宏需要用小括號包裹參數。
此外, Jinja2 允許動態繼承和動態包含。老的輔助函數?rendertemplate?作古, 而使用include?。包含不再導入宏和變量聲明,因為采用了新的?import?標簽。 這個概念在?[*導入*](http://docs.jinkan.org/docs/jinja2/templates.html#import)文檔中做了解釋。
另一個改變發生在?for?標簽里。特殊的循環變量不再擁有?parent?屬性,而 你需要自己給循環起別名。見?[*訪問父級循環*](http://docs.jinkan.org/docs/jinja2/tricks.html#accessing-the-parent-loop)?了解更多細節。
- 介紹
- 預備知識
- 安裝
- 基本 API 使用
- 實驗性的 Python 3 支持
- API
- 基礎
- Unicode
- 高層 API
- 自動轉義
- 標識符的說明
- 未定義類型
- 上下文
- 加載器
- 字節碼緩存
- 實用工具
- 異常
- 自定義過濾器
- 求值上下文
- 自定義測試
- 全局命名空間
- 低層 API
- 元 API
- 沙箱
- API
- 運算符攔截
- 模板設計者文檔
- 概要
- 變量
- 過濾器
- 測試
- 注釋
- 空白控制
- 轉義
- 行語句
- 模板繼承
- HTML 轉義
- 控制結構清單
- 導入上下文行為
- 表達式
- 內置過濾器清單
- 內置測試清單
- 全局函數清單
- 擴展
- 自動轉義擴展
- 擴展
- 添加擴展
- i18n 擴展
- 表達式語句
- 循環控制
- With 語句
- 自動轉義擴展
- 編寫擴展
- 集成
- Babel 集成
- Pylons
- TextMate
- Vim
- 從其它的模板引擎切換
- Jinja1
- Django
- Mako
- 提示和技巧
- Null-Master 退回
- 交替的行
- 高亮活動菜單項
- 訪問父級循環