Changelog

3.0.0版

未发布的

  • 放弃对Python2.7和3.5的支持。

  • 将MarkupSafe依赖项凹凸到>=1.1。

  • 将Babel可选依赖项提升到>=2.1。

  • 删除标记为已弃用的代码。

  • 使用 PEP 451 用于加载模板的API PackageLoader . #1168

  • 修复导致导入的宏无法访问当前模板的全局参数的错误。 #688

  • 添加忽略功能 trim_blocks 使用 +%}} . #1036

版本2.11.2

发布日期:2020-04-13

  • 修复导致可调用对象的错误 __getattr__ ,像 Mock 被视为 contextfunction() . #1145

  • 更新 wordcount 要触发的筛选器 Undefined 方法将输入包装到 soft_str() . #1160

  • 修复在python32位上显示回溯时的挂起。 #1162

  • 显示引发的对象的未定义错误 AttributeError on access不会导致递归错误。 #1177

  • 将更改还原为 PackageLoader 从命名空间中删除了对setup2.10的依赖性和对pkg.10包的依赖性。这些更改在使用Pytest时引发了问题。因为在支持python2和 PEP 451 同时,更改将恢复到3.0。 #1182

  • 修复删除新行时错误消息中的行号。 #1178

  • 特殊 namespace() 模板中的赋值对象在异步环境中工作。 #1180

  • 在修复中间标记之前删除空白行时 lstrip_blocks 启用。 #1138

  • NativeEnvironment doesn't evaluate intermediate strings during rendering. This prevents early evaluation which could change the value of an expression. #1186

版本2.11.1

发布日期:2020-01-30

  • 修复了一个阻止在属性后查找键的错误 ({{{{ data.items[1:] }}}} )在异步模板中。 #1141

版本11

发布日期:2020-01-27

  • 放弃对Python2.6、3.3和3.4的支持。这将是支持Python2.7和3.5的最新版本。

  • 增加了一个新的 ChainableUndefined 类来支持未定义对象上的getitem和getattr。 #977

  • 允许 {{%+ 语法(使用NOP行为)当 lstrip_blocks 已禁用。 #748

  • 增加了一个 default 的参数 map 过滤器。 #557

  • 从中排除环境全局参数 meta.find_undeclared_variables() . #931

  • 浮点数可以用科学的符号来写,比如2.56e-3。 #912#922

  • Int和float字面值可以用''uu'分隔符来编写,以确保易读性,如12_345。 #923

  • 修复导致死锁的错误 LRUCache.setdefault . #1000

  • 这个 trim filter接受一个可选的字符串来修剪。 #828

  • 一个新的 jinja2.ext.debug 扩展名添加 {{% debug %}} 标记以快速转储当前上下文和可用的筛选器和测试。 #174#798, #983

  • 使用大量空白对模板进行词法分析要快得多。 #857#858

  • 比较的括号被保留,所以 {{{{ 2 * (3 < 5) }}}} 输出“2”而不是“假”。 #755#938

  • 添加新 booleanfalsetrueintegerfloat 测验。 #824

  • 环境就是环境 finalize 函数只应用于表达式的输出(常量或非常量),而不是静态模板数据。 #63

  • 当提供多个路径到 FileSystemLoader ,模板可以与目录同名。 #821

  • 总是返回 Undefined 当省略 else A中的子句 {{{{ 'foo' if bar }}}} 无论环境如何 undefined 班级。省略 else 子句是有效的快捷方式,使用时不应引发错误 StrictUndefined . #710#1079

  • 修复的行为 loop 控制变量,如 lengthrevindex0 在发电机上循环时。 #459, #751, #794#993

  • 在一个初始的异步环境中,它只支持一次缓慢的导入。 #765

  • 在异步环境中 |map 如果需要,过滤器将等待过滤器调用。 #913

  • 在for循环中访问 loop 属性时,迭代器不会在当前迭代之前提前,除非 lengthrevindexnextitemlast 被访问。这使得它不太可能破裂 groupby 结果。 #555#1101

  • 在异步环境中 loop 属性 lengthrevindex 为异步迭代器工作。 #1101

  • 如果需要从属性awaited/attribute属性中访问属性,则将从异步环境中获取。 #1101

  • PackageLoader doesn't depend on setuptools or pkg_resources. #970

  • PackageLoader has limited support for PEP 420 namespace packages. #1097

  • 支持 os.PathLike 中的对象 FileSystemLoaderModuleLoader . #870

  • NativeTemplate correctly handles quotes between expressions. "'{{ a }}', '{{ b }}'" renders as the tuple ('1', '2') rather than the string '1, 2'. #1020

  • 创建一个 NativeTemplate 直接创建 NativeEnvironment 而不是违约 Environment . #1091

  • 打电话后 LRUCache.copy() ,副本的队列方法指向正确的队列。 #843

  • 编译模板时总是写入UTF-8,而不是默认为系统编码。 #889

  • |wordwrap filter treats existing newlines as separate paragraphs to be wrapped individually, rather than creating short intermediate lines. #175

  • 添加 break_on_hyphens 参数到 |wordwrap 过滤器。 #550

  • Cython编译的修饰为上下文函数的函数将被传递给上下文。 #1108

  • 当在编译时计算常量的链式比较时,结果遵循Python返回的行为 False 如果有任何比较返回 False 而不是最后一个。 #1102

  • 模板中异常的回溯显示Python>=3.7的正确行号和源代码。 #1104

  • python3中模板语法错误的回溯不再显示内部编译器框架。 #763

  • 添加 DerivedContextReference 节点,扩展可以使用它来获取当前上下文和局部变量,例如 loop . #860

  • 编译期间的常量折叠应用于以前忽略的某些节点类型。 #733

  • TemplateSyntaxError.source is not empty when raised from an included template. #457

  • 路过 Undefined 价值到 get_template (例如通过 extendsimportinclude ),引发一个 UndefinedError 一贯地。 select_template 将在尝试列表中显示未定义的消息,而不是空字符串。 #1037

  • TemplateSyntaxError can be pickled. #1117

版本2.10.3

发布日期:2019-10-04

  • 修复巴别塔入口点的错误 setup.py 这妨碍了安装。

版本2.10.2

发布日期:2019-10-04

  • 修复Python3.7弃用警告。

  • 使用 range 在沙盒环境中使用 xrange 以避免内存使用。 #933

  • 在使用python3.7的调试版本时,使用python3.7更好的回溯支持来避免核心转储。 #1050

版本2.10.1

发布日期:2019-04-06

  • SandboxedEnvironment 安全把手 str.format_map 以防止代码通过不受信任的格式字符串执行。沙箱已经处理好了 str.format .

版本2.10

发布日期:2017-11-08

  • 添加了一个名为 OverlayScope 它可以用于创建一个未优化的范围,该范围将从派生上下文中查找所有变量。

  • 增加了一个 in 类似于in操作符的测试。这可以与 rejectselect .

  • 补充 previtemnextitem 循环上下文,提供对循环中上一个/下一个项的访问。如果该项不存在,则该值未定义。

  • 补充 changed(*values) 循环上下文,提供一种简单的方法来检查自上次迭代(或者更确切地说,自上次方法调用以来)以来某个值是否发生了更改。

  • 增加了一个 namespace 创建特殊对象的函数,该对象允许使用 set 标签。这可以用于跨作用域传递数据,例如从循环体到循环后的代码。

  • 增加了一个 trimmed 修饰语 {{% trans %}} 去除换行符和周围空白。还添加了一个新策略,以便为所有人启用此策略 trans 阻碍。

  • 这个 random 过滤器不再是错误的常数折叠,每次呈现模板时都会生成一个新的随机选择。 #478

  • 增加了一个 unique 过滤器。 #469

  • 补充 minmax 过滤器。 #475

  • 为所有比较运算符添加了测试: eqneltlegtge . #665

  • import statement cannot end with a trailing comma. #617, #618

  • indent filter will not indent blank lines by default. #685

  • 添加 reverse 的参数 dictsort 过滤器。 #692

  • 添加 NativeEnvironment 它将模板呈现为本机python类型而不是字符串。 #708

  • 向块添加了筛选器支持 set 标签。 #489

  • tojson filter marks output as safe to match documented behavior. #718

  • 解决了一个错误,在该错误中,获取用于跟踪的调试局部变量可以修改模板上下文。

  • 修复了一个有很多 {{% elif ... %}} 块导致“缩进级别太多”错误。这些块现在编译为本机 elif ..: 而不是 else: if ..: #759

2.2.6版

发布日期:2017-04-03

  • 修复了快速解析模式下的自定义上下文行为 #675

2.5.5版

发布日期:2017-01-28

  • 恢复了内部的原始报告 _GroupTuple 因为这导致了ansible的问题,这是一个意外的改变。 #654

  • 添加了对重写旧上下文的自定义上下文的向后支持 resolve 方法:由于人们很难发现这可能导致回归。

  • 为for循环的else块正确使用缓冲区。这导致Python的语法完全错误 #669

  • 解决以下问题: {{% extends %}} 标记不能用于异步环境。 #668

  • 通过减少python3上用于标识符匹配的unicode数据库转储,可以稍微减少内存占用 #666

  • 修正了自动转义不适用于异步编译模式下的宏。 #671

2.9.4版

发布日期:2017-01-10

  • 解决了字符串文本的一些警告。 #646

  • 增加字节码缓存版本,因为之前的疏忽而没有完成。

  • 修正了过滤循环的错误代码生成和作用域。 #649

  • 解决了这样一个问题:当if语句中包含块时,已知扩展块之后的顶级输出静音可能会生成无效代码。 #651

  • 制成 truncate.leeway 默认配置可提高与旧模板的兼容性。

2.2.3版

发布日期:2017-01-08

  • 将宏中块的使用恢复到以前可能的范围。在python3上,它将呈现一个生成器repr,而不是块内容。 #645

  • 设置在从外部范围读取变量时,在内部范围内分配变量的一致行为。现在,它将在所有情况下设置预期的行为,但是它不能恢复旧的行为,在那里可以对外部作用域进行有限的分配。有关更多信息和讨论,请参见 #641

  • 解决了一个问题 block scoped 不会利用新的范围界定规则。在一些更奇特的情况下,在局部范围内重写的变量不会使其成为块。

  • 更改的代码生成 with 声明要符合新的范围界定规则。这解决了边缘情况中一些不太可能的错误。这也引入了一个新的内部 With 可由扩展使用的节点。

2.2.2版

发布日期:2017-01-08

  • 修复了导致for循环不能对目标迭代器和源迭代器使用相同变量的回归。 #640

  • 添加对以前未知的宏行为的支持。在某些情况下,显式地为宏提供调用者参数是可能的。虽然严重的缺陷和意外,但事实证明,这是一个常见的案件,得到复制粘贴各地。为了不完全破坏与最常见情况的向后兼容性,现在可以为调用者提供显式关键字参数(如果给定显式默认值)。 #642

2.2.1版

发布日期:2017-01-07

  • 解决了带有宏调用块作用域的回归。与外部宏使用相同标识符的嵌套调用程序块可能会错误地引用错误的变量。

版本2.9

2017-01-07发布,代号衍生

  • 更改环境中的缓存键定义。这修复了2.8中引入的性能回归。

  • 为添加了支持 generator_stop 在受支持的python版本(python 3.5及更高版本)上

  • 修正了一个长期存在的问题,即数学运算的运算符优先级与预期不符。

  • 通过新的异步模式增加了对python 3.6异步迭代器的支持。

  • 添加了过滤默认值和类似内容的策略。

  • Urlize现在默认设置“rel noopener”。

  • 支持2.x中旧样式类的属性回退。

  • 在扩展情况下支持顶级集合语句。

  • 已恢复python 3用户的cycler行为。

  • 现在减法与其他未定义值的运算符的行为相同。

  • map 如果你忘记引用参数,朋友们会给出更好的错误信息。

  • 取决于MarkupSafe 0.23或更高。

  • 改进了 truncate 过滤以支持更好的截断,以防字符串几乎没有被截断。

  • 将宏自动转义的逻辑更改为基于调用时的运行时自动转义信息,而不是宏定义时间。

  • 移植了 tojson 从Flask到Jinja进行过滤,并将其与新的政策框架连接起来。

  • 块集现在已标记 safe 默认情况下。

  • 在python 2上,现在可以使用 compiler.ascii_str 政策。

  • 测试现在不再接受任意表达式作为第一个参数,而是一个受限制的参数。这意味着您现在可以在一个表达式中正确使用多个测试,而不需要额外的括号。特别是你现在可以写作了 foo is divisibleby 2 or foo is divisibleby 3 如你所料。

  • 极大地改变了范围界定系统,使其更符合模板设计者和开发人员的期望。现在不同的include和import构造之间不再有什么神奇的区别了。上下文现在总是以相同的方式传播。唯一剩下的区别是 with contextwithout context .

  • 这个 withautoescape 标签现在是内置的。

  • 添加新的 select_autoescape 功能,帮助配置更好的自动转义更容易。

  • 修复了访问异步生成器属性时沙盒中的运行时错误。

2.2.1版

发布日期:2016-12-29

  • 修正了 for_qsurlencode .

  • 应用时固定回归 int 到非字符串值。

  • 安全性:如果使用沙盒模式,则格式表达式现在使用与Jinja中相同的规则进行沙盒处理。这解决了格式字符串可能出现的各种信息泄漏问题。

版本2.8

发布日期:2015-07-26,代号替换

  • 补充 target 参数到URLIZE函数。

  • 为添加了支持 followsymlinks 到文件系统加载程序。

  • 截断过滤器现在计算长度。

  • 添加了EqualTo过滤器,有助于选择过滤器。

  • 更改了缓存键以使用绝对文件名(如果可用)而不是加载名。

  • 某些迭代器的固定循环长度计算。

  • 将Python字符串改为本地字符串时如何在Python中强制使用Jinja编码。

  • 补充 make_logging_undefined 它返回一个未定义的对象,该对象将失败记录到记录器中。

  • 如果缓存数据的解组失败,模板将立即重新加载。

  • 实现了一个块 set 标签。

  • 默认缓存大小从低50增加到400。

  • 固定的 is number 测试以接受所有Python版本中的长整数。

  • 改变 is number 接受十进制数字。

  • 添加了对默认参数的检查,后跟非默认参数。这一变化使 {{% macro m(x, y=1, z) %}} 语法错误。此代码以前的行为无论如何都被破坏(导致将默认值应用于 y

  • 添加使用自定义子类的功能 jinja2.compiler.CodeGeneratorjinja2.runtime.Context 通过向环境中添加两个新属性 (code_generator_classcontext_class#404

  • 在环境的finalize回调中添加了对context/environment/evalctx decorator函数的支持。

  • 正确转义urlencode的查询字符串。以前在那个地方砍伤是没有逃过的。

  • 将“base”参数添加到“int”筛选器。

2.7.3版

发布日期:2014-06-06

  • 安全问题:已更正缓存文件夹的安全修复。此修复程序由RedHat提供。

2.7.2版

发布日期:2014-01-10

  • 前缀加载器未将局部变量正确转发给内部加载程序。现在已经修复了。

  • 安全问题:将文件系统缓存的默认文件夹更改为特定于用户的,并且在UNIX系统上具有读写保护。看到了吗 Debian bug 734747 更多信息。

2.7.1版

发布日期:2013-08-07

  • 修正了一个错误 call_filter 在环境和上下文筛选器上工作不正常。

  • 修复了对字节码缓存缺少python 3支持的问题。

  • 恢复了对在包含的模板中定义块的支持,因为这会破坏用户的现有模板。

  • 修正了一些关于未定义和节点散列的警告,如果运行python时出现python 3的警告。

  • 添加了对未定义对象正确散列的支持。

  • 修正了标题过滤器不能处理已经大写的字符串的错误。

版本2.7

2013-05-20发布,代号翻译

  • Choice和Prefix加载器现在分别调度源和模板查找,以便与模块加载器结合使用,如广告所示。

  • 固定的文件大小格式。

  • 为babel提取添加了一个非静默选项。

  • 补充 urlencode 自动引用URL安全使用值的筛选器,utf-8作为唯一受支持的编码。如果应用程序希望更改此编码,则可以重写筛选器。

  • 补充 keep-trailing-newline 环境和模板的配置,以选择性地保留最后的尾随换行符。

  • 访问 last 在循环上下文中,不再将迭代器消耗到列表中。

  • python需求已更改:现在需要2.6、2.7或>=3.3,由相同的源代码支持,使用“six”兼容性库。

  • 允许 contextfunction 以及其他要应用于 __call__ .

  • 添加了对从换行改为 wordwrap 过滤器。

  • 添加了对自动忽略memcache错误的支持。

  • 添加了在模板中保留尾随新行的支持。

  • 为在块的左侧剥离空白添加了更细粒度的支持。

  • 补充 mapselectrejectselectattrrejectattr 过滤器。

  • 为添加了支持 loop.depth 为了弄清楚代码在递归循环中的深度。

  • 已禁用py py和python 3的py_编译。

版本2.6

发布日期:2011-07-24,代号:卷积

  • 内部属性现在引发一个内部属性错误,而不是返回一个未定义的。这修复了将未定义的对象传递给Python语义(需要api)时的问题。

  • 回溯支持现在可以对PyPy正常工作了。(用1.4测试)

  • 为沙盒环境实现了操作员拦截。这允许应用程序开发人员禁用内置运算符以获得更好的安全性。(例如,将数学运算符限制为实际整数而不是long)

  • Groupby过滤器现在支持按属性的属性分组的点式表示法。

  • 作用域块现在可以正确处理顶级赋值和导入。以前,导入突然“消失”在作用域块中。

  • 在从字节码缓存加载代码之前自动检测较新的Python解释器版本,以防止无效操作码上出现段错误。早期的Jinja版本中的segfault不是Jinja错误,而是底层Python解释器中的一个限制。如果在升级Python解释器之后注意到早期版本中的Jinja segfaulting,那么就足以刷新字节码缓存了。这就不再有必要了,Jinja现在会自动检测到这些情况。

  • sum过滤器现在可以按属性汇总值。这是一个向后不兼容的变化。前面过滤器的参数是可选的起始索引,默认为零。这现在成为函数的第二个参数,因为它很少使用。

  • 与sum一样,sort now还可以按属性对项目排序。

  • 和sum和sort一样,join now也可以将对象的属性作为字符串连接起来。

  • 内部评估上下文现在有了对环境的引用。

  • 添加了一个映射测试,以查看对象是dict还是具有类似接口的对象。

2.5.5版

发布日期:2010-10-18

  • 构建文档不再是发布的一部分。

2.5.4版

发布日期:2010-10-17

  • 固定扩展未正确加载覆盖。

  • 在cpython中为调试器解决一个导致64位big-endian体系结构上出现SegFaults的错误。

2.5.3版

发布日期:2010-10-17

  • 修正了2.5.2中引入的运算符优先级错误。类似“的陈述”-美食酒吧“在表达式的第一部分((-foo.bar”)周围应用了隐式括号,而不是更正确的部分”-(美食酒吧)".

2.5.2版

发布日期:2010-08-18

  • 改进设置.py编写脚本以更好地处理人们可能仍然从中得到的假设 (--with-speedups

  • 修复了排除新调试支持的打包错误。

2.5.1版

发布日期:2010-08-17

  • 从模板调用的函数引发的StopIteration异常现在被截获并转换为未定义的。这解决了很多调试的麻烦。(StopIteration在内部用于中止模板执行)

  • 稍微提高了宏调用的性能。

  • Babel提取现在可以正确提取newstyle gettext调用。

  • 使用变量 num 在newStyle getText中,除了复数形式之外,计数将不再增加 KeyError .

  • 删除了内置标记类并切换到markupsafe。为了向后兼容,纯Python实现仍然存在,但是由Jinja开发人员从markupsafe中提取出来。调试支持包含在一个名为“debugsupport”的单独特性中,并且在默认情况下被禁用,因为它只与python2.4相关

  • 修正了一元运算符优先级错误的问题。

版本2.5

发布日期:2010-05-29,代号不一致

  • 通过添加对不区分大小写的搜索的支持,改进了排序过滤器(长期以来应该是这样工作的)。

  • 修正了getattribute常量折叠的错误。

  • 支持newstyle gettext翻译,这会产生更好的模板内用户界面和更一致的目录。

  • 现在可以在创建环境后注册扩展。

2.4.1版

发布日期:2010-04-20

  • 修正了未定义的错误报告错误。

版本2.4

2010年4月13日发布,代号相关性

  • 环境模板加载函数现在透明地通过模板对象传递给它。这使得可以从传递给模板的模板对象导入或扩展。

  • 增加了一个 ModuleLoader 它可以从预编译源加载模板。该环境现在提供了一种方法,可以将配置好的加载程序中的模板编译到zip文件或文件夹中。

  • u speedups C扩展现在支持python3。

  • 增加了对自动转义切换部分的支持和对求值上下文的支持。

  • 扩展现在有了优先权。

2.3.1版

发布日期:2010-02-19

  • 修正了所有python版本的错误报告错误

  • 修复了Python2.4上的错误报告错误

版本2.3

2010年2月10日发布,代号3000条 Python

  • 修复了代码生成器的问题,该问题导致在if块中使用set时生成未绑定变量,以及其他小标识符问题。

  • Include标记现在可以在多个模板之间进行选择,并在给定模板列表的情况下获取第一个模板。

  • 修正了在外部作用域中调用块的问题,该调用块的参数也用作内部框架中的局部变量 #360 .

  • 大大改进了错误消息报告 #339

  • 隐式元组表达式不能再完全为空。这个变化使 {{% if %}} 语法错误。 #364

  • 增加了对翻译评论的支持,如果通过巴别塔提取。

  • 添加了语句扩展名。

  • 实验性的python3支持。

2.2.1版

发布日期:2009-09-14

  • 修正了Jython上的Jinja的一些小问题。

版本2.2

发布日期:2009-09-13,代号:Kong

  • include语句现在可以标记为 ignore missing 跳过不存在的模板。

  • 优先权 not 提高。现在可以写了 not foo in bar 作为别名 foo not in bar 就像在python中。以前语法需要括号 (not (foo in bar) )这很奇怪。

  • 修复了在定义宏或使用 {{% call %}} 在循环中标记。

  • 修复了解析器中导致 {{{{ foo[1, 2] }}}} 不可能的。

  • 使之能够引用调用方框架中未使用的包含模板中的外部作用域中的名称 #327

  • 修正了当名称用作迭代变量和正则变量时导致内部错误的错误。 之后 如果该变量未使用,则返回循环 之前 循环。 #331

  • 增加了可选的支持 scoped 块的修改器。

  • 增加了对行注释的支持。

  • 增加了 meta 模块。

  • 已在环境中将(未记录)属性“overlay”重命名为“overlayed”,因为它与同名方法冲突。

  • 现在默认禁用加速扩展。

2.1.1版本

发布日期:2008-12-25

  • 修复了在空递归循环上循环导致的转换错误。

版本2.1

发布于2008年11月23日,代号Yasuzō

  • 并用一个特殊的循环嵌套了一个错误。在更改之前,一个内部循环在迭代后从外部循环重写循环变量。

  • 修正了i18n扩展导致显式复数块查找错误变量的错误。

  • 修正了lexer的一个限制 {{{{ foo.0.0 }}}} 不可能的。

  • 使用常量值对变量进行基于索引的订阅现在将返回未定义的对象,而不是引发索引错误。这是一个由急切的优化引起的错误。

  • i18n扩展查找 foo.ugettext 现在紧随其后 foo.gettext 如果安装了翻译对象。这使得处理自定义翻译类更容易。

  • 修正了有条件扩展的混乱行为。在某些情况下,循环被部分执行,即使它们不是可见区域的一部分。

  • 补充 sort 像这样工作的过滤器 dictsort 但对于任意序列。

  • 修正了宏中空语句的错误。

  • 实现了字节码缓存系统。

  • 模板上下文现在是可扩展的

  • inclusion和imports“with context”现在转发所有变量,而不仅仅是初始上下文。

  • 添加了一个称为 cycler .

  • 添加了一个名为 joiner .

  • 增加了一个 compile_expression 方法编译为可调用的python对象。

  • 修正了urlize中的一个转义错误

版本2

发布于2008-07-17,代号Jinjavitus

  • 对象的订阅(查找属性和项)从稍有变化。现在可以通过使用点符号查找或括号语法赋予属性或项更高的优先级。这也稍微改变了AST。 Subscript 已经不见了,取而代之的是 GetitemGetattr .

  • 增加了对扩展的预处理和令牌流过滤的支持。这将允许扩展允许在模板数据和类似内容中简化gettext调用。

  • 补充 TemplateStream.dump .

  • 添加了对隐式字符串文本连接缺少的支持。 {{{{ "foo" "bar" }}}} 等于 {{{{ "foobar" }}}}

  • else 对于条件表达式是可选的。如果未给出,则计算为 false .

  • 通过提供位置来改进未定义值的错误报告。

  • filesizeformat 过滤器现在默认使用十进制前缀,可以用第二个参数设置为二进制模式。

  • 修正了终结器中的错误

2.0RC1版本

发布日期:2008-06-09

  • 第一次发布Jinja2。