Jinja2 Changelog ¶
版本2.8 ¶
(codename Replacement,于2015年7月26日发布)
- 向urlize函数添加了target参数。
- 向文件系统加载程序添加了对followsymlinks的支持。
- 截断过滤器现在计算长度。
- 添加了等号过滤器,帮助选择过滤器。
- 更改缓存键以使用绝对文件名(如果可用)而不是加载名称。
- 一些迭代器的固定循环长度计算。
- 更改了如何Jinja2强制字符串为Python 2中的本机字符串,以在人们违反默认编码时工作。
- 添加了
make_logging_undefined()
,它返回将失败记录到记录器中的未定义对象。 - 如果解组缓存数据失败,模板将立即重新加载。
- 实现了一个块
set
标签。 - 默认缓存大小从50增加到400。
- 固定
是 number
测试在所有Python版本中接受长整数。 - 更改
为 数字
以接受小数作为数字。 - 添加了对默认参数后面跟非默认参数的检查。此更改使
{% 宏 m(x, t> y = 1, z) %} ... {% endmacro %}
此代码的先前行为(无论如何会导致默认值应用于y)。 - 添加通过向环境中添加两个新属性(code_generator_class)并使用
jinja2.compiler.CodeGenerator
和jinja2.runtime.Context
的自定义子类context_class)(pull request#404
)。 - 添加了对context / environment / evalctx装饰器函数的支持,用于完成环境的回调。
- 正确转义urlencode的查询字符串。以前的斜杠在那个地方没有转义。
- 将'base'参数添加到'int'过滤器。
版本2.7.2 ¶
(bugfix版本,于2014年1月10日发布)
- 前缀加载器没有正确转发本地人到内部装载器。这是现在固定。
- 安全问题:将文件系统高速缓存的默认文件夹更改为特定于用户且在UNIX系统上受到读写保护。有关详细信息,请参见Debian bug 734747。
版本2.7.1 ¶
(bugfix版本,于2013年8月7日发布)
- 修复了
call_filter
在环境和上下文过滤器上无法正常工作的错误。 - 固定缺乏Python 3支持字节码缓存。
- 还原支持在包含的模板中定义块,因为这打破了用户的现有模板。
- 修复了一些带有未定义和节点的哈希的警告,如果Python对Python 3运行警告。
- 添加了对正确散列未定义对象的支持。
- 修复了标题过滤器不能在已经大写的字符串上工作的错误。
版本2.7 ¶
(代号翻译,2013年5月20日发布)
- 选择和前缀加载器现在单独分派源和模板查找,以便与所公告的模块加载器组合工作。
- 固定filesize格式。
- 为babel提取添加了一个非静默选项。
- 添加了urlencode过滤器,可自动将网址安全使用的值引用为utf-8作为仅支持的编码。如果应用程序想要更改此编码,它们可以覆盖过滤器。
- 向环境和模板添加了keep-trailing-newline配置,可选择保留最后一个换行符。
- 在循环上下文中访问last不再导致迭代器被使用到列表中。
- Python要求更改:现在需要2.6,2.7或> = 3.3,由相同的源代码,使用“六”兼容性库。
- 允许上下文函数和其他装饰器应用于__ call __。
- 添加了对在wordwrap过滤器中从换行符更改为不同符号的支持。
- 添加了对静默忽略内存缓存错误的支持。
- 添加了在模板中保留尾随换行的支持。
- 对块左侧的剥离空格添加了更细粒度的支持。
- 添加了地图,选择,拒绝,selectattr和rejectattr过滤器。
- 添加了对loop.depth的支持,以确定递归循环中代码的深度。
- 禁用py_compile为pypy和python 3。
版本2.6 ¶
(代号Convolution,于2011年7月24日发布)
- 内部属性现在引发内部属性错误,而不是返回未定义。这修复了将未定义的对象传递给需要API的Python语义时出现的问题。
- 回溯支持现在适用于PyPy。(测试1.4)
- 实施操作员拦截沙箱环境。这允许应用程序开发人员禁用内置操作符,以提高安全性。(例如,将数学运算符限制为实际整数而不是长整数)
- groupby过滤器现在支持按属性属性分组的点符号。
- 作用域块现在正确处理顶级分配和导入。以前一个进口突然“消失”在一个作用域。
- 在从字节码缓存加载代码之前自动检测较新的Python解释器版本,以防止无效操作码上的segfault。早期的Jinja2版本的segfault在这里不是一个Jinja2的bug,但是在底层的Python解释器的限制。如果在升级Python解释器之后注意到在早期版本中的Jinja2 segfaulting,你不必升级,足以刷新字节码缓存。这只是不再使这一点必要,Jinja2将自动检测这些情况。
- sum过滤器现在可以按属性来汇总值。这是一个向后不兼容的更改。先前过滤器的参数是可选的起始索引,默认为零。这现在成为函数的第二个参数,因为它很少使用。
- like sum,sort现在也可以按属性排序项目。
- 如和和排序,现在连接也能够将对象的属性作为字符串连接。
- 内部eval上下文现在具有对环境的引用。
- 添加了一个映射测试,以查看对象是否是具有类似接口的dict或对象。
版本2.5.3 ¶
(bugfix版本,于2010年10月17日发布)
- 固定在2.5.2中引入的运算符优先级错误。像“-foo.bar”这样的语句在表达式的第一部分(“(-foo).bar”)上应用了隐式括号,而不是更正确的“ - (foo.bar)”。
版本2.5.1 ¶
(bugfix版本,于2010年8月17日发布)
- 现在拦截从模板调用的函数引发的StopIteration异常并将其转换为undefined。这解决了很多调试的悲伤。(StopIteration在内部用于中止模板执行)
- 提高了宏调用的性能。
- babel提取现在可以正确提取newstyle的gettext调用。
- 在newstyle gettext中使用变量num,而不使用pluralize计数将不再产生
KeyError
。 - 删除内置标记类并切换到markupsafe。为了向后兼容性,纯Python实现仍然存在,但是被来自Jinja2开发人员的markupsafe提取。调试支持进入了一个名为“debugsupport”的单独功能,默认情况下禁用,因为它只与Python 2.4相关
- 解决了具有错误前提的一元运算符的问题。
版本2.5 ¶
(代号为Incoherence,更新于2010年5月29日)
- 改进排序过滤器(应该已经这样工作了很长时间)通过添加支持区分大小写搜索。
- 修正了getattribute常量折叠的错误。
- 支持newstyle gettext翻译,这将导致更好的模板用户界面和更一致的目录。(Newstyle Gettext)
- 现在可以在创建环境后注册扩展。
版本2.4 ¶
(代号相关,2010年4月13日发布)
- 环境模板加载函数现在透明地传递一个模板对象,如果它被传递给它。这使得可以从传递给模板的模板对象中导入或扩展。
- 添加了可以从预编译源加载模板的
ModuleLoader
。现在环境的特点是将模板从已配置的加载器编译为zip文件或文件夹。 - _speedups C扩展现在支持Python 3。
- 添加了对自动转换切换部分和对评估上下文(Evaluation Context)的支持。
- 扩展现在有优先级。
版本2.3 ¶
(3000 Pythons,于2010年2月10日发布)
- 修复了代码生成器的问题,如果在if块和其他小标识符问题中使用set,则会导致生成未绑定的变量。
- include标记现在能够在多个模板之间进行选择,并且如果给出了模板列表,则采用第一个存在的模板。
- 解决了在外部范围中具有调用块的问题,该调用块具有也用作内部帧中的局部变量的参数(#360)。
- 大大提高了错误消息报告(#339)
- 隐式元组表达式不能再完全为空。此更改会使
{% if %} ... {% endif %}
现在出现语法错误。(#364) - 如果通过babel提取,添加对翻译员评论的支持。
- 添加语句扩展。
- 实验Python 3支持。
版本2.2 ¶
(代号为Kong,2009年9月13日发布)
- Include语句现在可以标记为
忽略 缺少
以跳过不存在的模板。 - 不优先的优先级。现在可以将而不是foo在bar中写为foo not in bar的别名,就像在python中一样。以前语法需要括号(not(foo in bar)),这是奇数。
- 修正了定义宏或使用{%call%}标签内部循环时导致语法错误的错误。
- 修正了解析器中产生
{{ foo [1, 2] }} / t0>不可能。
- 使得可以引用在调用者框架中未使用的包含模板中的外部范围的名称(#327)
- 修正了一个错误,如果在 t>之前使用之前未使用该变量的循环,在之后的循环中使用名称作为迭代变量和常规变量(#331)
- 添加了对块的可选作用域修饰符的支持。
- 添加了对行注释的支持。
- 添加了元模块。
- 将重命名(未记录)属性“覆盖”为环境上的“覆盖”,因为它与同名的方法冲突。
- 加速扩展现在默认禁用。
版本2.1 ¶
(代号为Yasuzō,2008年11月23日发布)
- 修复了嵌套循环和特殊循环变量的错误。在改变之前,内循环从迭代之后的外层循环重写循环变量。
- 修复了与导致显式复数块查找错误变量的i18n扩展的错误。
- 修复了使得
{{ foo.0.0 }}
不可能的词法分析器中的限制。 - 基于索引的订阅具有常量值的变量现在返回一个未定义的对象,而不是提高索引错误。这是一个由急切优化引起的错误。
- 如果安装了翻译对象,i18n扩展将查找foo.ugettext,然后是foo.gettext。这使得处理自定义翻译类更容易。
- 使用条件扩展来修复混乱的行为。循环在某些条件下部分执行,即使它们不是可见区域的一部分。
- 添加排序过滤器,其工作原理类似于dictsort,但适用于任意序列。
- 修复了一个在宏中有空语句的错误。
- 实现了字节码缓存系统。(Bytecode Cache)
- 模板上下文现在是weakref-able
- 包含和导入“与上下文”现在转发所有变量,不仅是初始上下文。
- 添加了一个称为cycler的循环辅助程序。
- 添加了名为joiner的联接助手。
- 向环境添加了一个compile_expression方法,允许将Jinja表达式编译为可调用的Python对象。
- 修复了一个逃逸的bug在urlize
版本2.0 ¶
(codename jinjavitus,2008年7月17日发布)
订阅对象(查找属性和项目)从轻微改变。现在可以通过使用点符号查找或括号语法为属性或项目赋予更高的优先级。这也改变了AST略微。下标已取消,并替换为
Getitem
和Getattr
。有关详细信息,请参阅the implementation details。
添加了对扩展的预处理和令牌流过滤的支持。这将允许扩展允许简单的gettext调用模板数据和类似的东西。
添加缺少支持隐式字符串字面串联。
{{ "foo" "bar" }}
is equivalent to{{ "foobar" }}
else对于条件表达式是可选的。如果未给出,则其计算结果为false。
通过提供位置来改进对未定义值的错误报告。
filesizeformat过滤器现在每个默认使用十进制前缀,并且可以使用第二个参数设置为二进制模式。
在终结器中修复bug