笨鸟编程-零基础入门Pyhton教程

 找回密码
 立即注册

扩展

发布者: 笨鸟自学网



新样式 Gettext

New in version 2.5.

从版本 2.5 开始你可以使用新样式的 gettext 调用。这些的启发源于 trac 的内部 gettext 函数并且完全被 babel 抽取工具支持。如果你不使用 Babel 的抽取工具, 它可能不会像其它抽取工具预期的那样工作。

标准 gettext 调用和新样式的 gettext 调用有什么区别?通常,它们要输入的东西 更少,出错率更低。并且如果在自动转义环境中使用它们,它们也能更好地支持自动 转义。这里是一些新老样式调用的差异:

标准 gettext:

{{ gettext('Hello World!') }}
{{ gettext('Hello %(name)s!')|format(name='World') }}
{{ ngettext('%(num)d apple', '%(num)d apples', apples|count)|format(
    num=apples|count
)}}

新样式看起来是这样:

{{ gettext('Hello World!') }}
{{ gettext('Hello %(name)s!', name='World') }}
{{ ngettext('%(num)d apple', '%(num)d apples', apples|count) }}

新样式 gettext 的优势是你需要输入的更少,并且命名占位符是强制的。后者看起 来似乎是缺陷,但解决了当翻译者不能切换两个占位符的位置时经常勉励的一大堆 麻烦。使用新样式的 gettext ,所有的格式化字符串看起来都一样。

除此之外,在新样式 gettext 中,如果没有使用占位符,字符串格式化也会被使用, 这使得所有的字符串表现一致。最后,不仅是新样式的 gettext 调用可以妥善地为 解决了许多转义相关问题的自动转义标记字符串,许多模板也在使用自动转义时体验 了多次。

表达式语句

Import name: jinja2.ext.do

“do”又叫做表达式语句扩展,向模板引擎添加了一个简单的 do 标签,其工作如同 一个变量表达式,只是忽略返回值。

循环控制

Import name: jinja2.ext.loopcontrols

这个扩展添加了循环中的 break 和 continue 支持。在启用它之后, Jinja2 提供的这两个关键字如同 Python 中那样工作。

With 语句

Import name: jinja2.ext.with_

New in version 2.3.

这个扩展添加了 with 关键字支持。使用这个关键字可以在模板中强制一块嵌套的 作用域。变量可以在 with 语句的块头中直接声明,或直接在里面使用标准的 set 语句。

自动转义扩展

Import name: jinja2.ext.autoescape

New in version 2.4.

自动转义扩展允许你在模板内开关自动转义特性。如果环境的 autoescape 设定为 False ,它可以被激活。如果是 True 可以被关闭。这个设定的覆盖是有作用域的。

编写扩展

你可以编写扩展来向 Jinja2 中添加自定义标签。这是一个不平凡的任务,而且通常不需 要,因为默认的标签和表达式涵盖了所有常用情况。如 i18n 扩展是一个扩展有用的好例 子,而另一个会是碎片缓存。

当你编写扩展时,你需要记住你在与 Jinja2 模板编译器一同工作,而它并不验证你传递 到它的节点树。如果 AST 是畸形的,你会得到各种各样的编译器或运行时错误,这调试起 来极其可怕。始终确保你在使用创建正确的节点。下面的 API 文档展示了有什么节点和如 何使用它们。


上一篇:模板设计者文档下一篇:集成

Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )

GMT+8, 2024-10-18 19:22 , Processed in 0.049624 second(s), 17 queries .

© 2001-2020

返回顶部