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

集成

Jinja2 提供了一些代碼來(lái)繼承到其它工具,諸如框架、 Babel 庫(kù)或你偏好的編輯器 的奇特的代碼高亮。這里是包含的這些的簡(jiǎn)要介紹。

幫助繼承的文件在 這里 可 用。

Babel 集成

Jinja 提供了用 Babel 抽取器從模板中抽取 gettext 消息的支持,抽取器的接入點(diǎn) 名為 jinja2.ext.babel_extract 。 Babel 支持的被作為 i18n 擴(kuò)展 的 一部分實(shí)現(xiàn)。

Gettext 消息從 trans 標(biāo)簽和代碼表達(dá)式中抽取。

要從模板中抽取 gettext 消息,項(xiàng)目需要在它的 Babel 抽取方法 [mapping file][3] 中 有一個(gè) Jinja2 節(jié):

[jinja2: **/templates/**.html]
encoding = utf-8

Environment 的語(yǔ)法相關(guān)選項(xiàng)也可作為 mapping file 的配置值。例如告知 抽取器模板使用 % 作為 line_statement_prefix 你可以這樣寫(xiě):

[jinja2: **/templates/**.html]
encoding = utf-8
line_statement_prefix = %

擴(kuò)展可能也被定義為傳遞一個(gè)逗號(hào)分割的導(dǎo)入路徑列表作為 extensions 值。 i18n 擴(kuò)展會(huì)被自動(dòng)添加。

Changed in version 2.7: 直到 2.7 模板語(yǔ)法錯(cuò)誤始終被忽略。因?yàn)樵S多人在模板文件夾中放置非模板的 html 文件,而這會(huì)隨機(jī)報(bào)錯(cuò),所以如此設(shè)定。假定是無(wú)論如何測(cè)試套件會(huì)捕獲 模板中的語(yǔ)法錯(cuò)誤。如果你不想要這個(gè)行為,你可以在設(shè)置中添加 slient=flase ,異常會(huì)被傳播。

Pylons

Pylons 0.9.7 開(kāi)始,集成 Jinja 到 Pylons 驅(qū)動(dòng)的應(yīng)用令人難以置信的簡(jiǎn)單。

模板引擎在 config/environment.py 中配置。為 Jinja2 的配置看起來(lái)是這樣:

from jinja2 import Environment, PackageLoader
config['pylons.app_globals'].jinja_env = Environment(
    loader=PackageLoader('yourapplication', 'templates')
)

之后,你可以用 pylons.templating 模塊中的 render_jinja 函數(shù)渲染 Jinja 模板。

此外,設(shè)置 Pylons 的 c 對(duì)象為嚴(yán)格模式是個(gè)好主意。按照默認(rèn),訪問(wèn)任何 c 對(duì)象 上不存在的屬性會(huì)返回一個(gè)空字符串而不是一個(gè)未定義對(duì)象。更改這個(gè),只需要使用這個(gè) 片段并添加到你的 config/environment.py 中:

config['pylons.strict_c'] = True

TextMate

在 Jinja2 項(xiàng)目根目錄的 ext 文件夾中,有一個(gè) TextMate 的 bundle 來(lái)提供 Jinja1 和 Jinja2 的基于文本的模板的語(yǔ)法高亮,同樣也支持 HTML 。它也包含了一些常用的片 段。

Vim

同樣,在 Jinja2 項(xiàng)目的根目錄下的 ext 文件夾中的 Vim-scripts 目錄有一個(gè) Vim的語(yǔ)法插件。 這個(gè)腳本 支持 Jinja1 和 Jinja2 。安裝后, jinja 和 htmljinja 兩種文件類(lèi)型可用。前者 給基于文本的模板,后者給 HTML 模板。

把這些文件復(fù)制到你的 syntax 文件夾。

上一篇:沙箱