Jinja2 使用一個名為?[Environment](http://docs.jinkan.org/docs/jinja2/api.html#jinja2.Environment "jinja2.Environment")?的中心對象。這個類的實例用于存儲配 置、全局對象,并用于從文件系統或其它位置加載模板。即使你通過:class:Template?類的構造函數用字符串創建模板,也會為你自動創建一個環境,盡管是共享的。
大多數應用在應用初始化時創建一個?[Environment](http://docs.jinkan.org/docs/jinja2/api.html#jinja2.Environment "jinja2.Environment")?對象,并用它加載模板。 在某些情況下,如果使用多份配置,使用并列的多個環境無論如何是有用的。
配置 Jinja2 為你的應用加載文檔的最簡單方式看起來大概是這樣:
~~~
from jinja2 import Environment, PackageLoader
env = Environment(loader=PackageLoader('yourapplication', 'templates'))
~~~
這會創建一個默認設定下的模板環境和一個在?yourapplication?python 包中的?templates文件夾中尋找模板的加載器。多個加載器是可用的,如果你需要從 數據庫或其它資源加載模板,你也可以自己寫一個。
你只需要調用?get_template()?方法從這個環境中加載模板,并會返回已加載的?[Template](http://docs.jinkan.org/docs/jinja2/api.html#jinja2.Template "jinja2.Template"):
~~~
template = env.get_template('mytemplate.html')
~~~
用若干變量來渲染它,調用?render()?方法:
~~~
print template.render(the='variables', go='here')
~~~
使用一個模板加載器,而不是向?[Template](http://docs.jinkan.org/docs/jinja2/api.html#jinja2.Template "jinja2.Template")?或?[Environment.from_string()](http://docs.jinkan.org/docs/jinja2/api.html#jinja2.Environment.from_string "jinja2.Environment.from_string")?傳遞字符串,有許多好處。除了使用上便利, 也使得模板繼承成為可能。
- 介紹
- 預備知識
- 安裝
- 基本 API 使用
- 實驗性的 Python 3 支持
- API
- 基礎
- Unicode
- 高層 API
- 自動轉義
- 標識符的說明
- 未定義類型
- 上下文
- 加載器
- 字節碼緩存
- 實用工具
- 異常
- 自定義過濾器
- 求值上下文
- 自定義測試
- 全局命名空間
- 低層 API
- 元 API
- 沙箱
- API
- 運算符攔截
- 模板設計者文檔
- 概要
- 變量
- 過濾器
- 測試
- 注釋
- 空白控制
- 轉義
- 行語句
- 模板繼承
- HTML 轉義
- 控制結構清單
- 導入上下文行為
- 表達式
- 內置過濾器清單
- 內置測試清單
- 全局函數清單
- 擴展
- 自動轉義擴展
- 擴展
- 添加擴展
- i18n 擴展
- 表達式語句
- 循環控制
- With 語句
- 自動轉義擴展
- 編寫擴展
- 集成
- Babel 集成
- Pylons
- TextMate
- Vim
- 從其它的模板引擎切換
- Jinja1
- Django
- Mako
- 提示和技巧
- Null-Master 退回
- 交替的行
- 高亮活動菜單項
- 訪問父級循環