变化

版本3.2.0

未发布

  • 将现代打包元数据用于 pyproject.toml 而不是 setup.cfg#1793

  • 使用 flit_core 而不是 setuptools 作为构建后端。

版本3.1.3

已发布2024-01-10

  • 修复了检查父模板中所需的块是否为空时出现的编译器错误。 #1858

  • xmlattr 筛选器不允许键带有空格。Ghsa-h5c8-rqwp-cp95

  • 生成错误消息,原因是嵌套无效 {% trans %} 阻止更多的帮助。 #1918

版本3.1.2

已发布2022-04-28

  • 将参数添加到 Environment.overlay 匹配 __init__#1645

  • 处理中的争用条件 FileSystemBytecodeCache#1654

版本3.1.1

已发布2022-03-25

  • Windows上的模板文件名使用主路径分隔符。 #1637

版本3.1.0

已发布2022-03-24

  • 放弃对Python3.6的支持。 #1534

  • 删除以前弃用的代码。 #1544

    • WithExtensionAutoEscapeExtension 现在都是内置的。

    • contextfiltercontextfunction 被替换为 pass_contextevalcontextfilterevalcontextfunction 被替换为 pass_eval_contextenvironmentfilterenvironmentfunction 被替换为 pass_environment

    • Markupescape 应从MarkupSafe导入。

    • 从非常旧的JJJA版本编译的模板可能需要重新编译。

    • 旧版解析模式 Context 不再支持子类。超覆 resolve_or_missing 而不是 resolve

    • unicode_urlencode 已重命名为 url_quote

  • 在宏中添加对本机类型的支持。 #1510

  • 这个 {% trans %} 标签可以使用 pgettextnpgettext 通过将上下文字符串作为标记中的第一个令牌传递,如 {% trans "title" %}#1430

  • 将有效的标识符字符从Python3.6更新到3.7。 #1571

  • 使用装饰的筛选器和测试 @async_variant 是可以腌制的。 #1612

  • 增列 items 过滤。 #1561

  • 订费 ([0] 等)可在环境处于异步模式时的筛选器、测试和调用之后使用。 #1573

  • 这个 groupby 默认情况下,筛选器不区分大小写,与其他比较筛选器匹配。添加了 case_sensitive 参数来控制此操作。 #1463

  • 模板名称中的Windows驱动器相对路径段不会导致 FileSystemLoaderPackageLoader 从驱动器相对路径加载。 #1621

版本3.0.3

已发布2021/11/09

  • 修复了Python3.10和3.11的回溯重写内部。 #1535

  • 修复了在解析Python3.10上的值时本机环境处理前导空格和尾随空格的方式。 #1537

  • 通过避免检查常见类型来提高异步性能。 #1514

  • 将更改恢复为 hash(Node) 行为。节点再次按ID进行散列 #1521

  • PackageLoader works when the package is a single module file. #1512

版本3.0.2

已发布2021/10/04

  • 修复了导致嵌套循环中的赋值仍在其外部被引用的循环作用域错误。 #1427

  • 制作 compile_templates 筛选器和导入名称的确定性。 #1452, #1453

  • 恢复导致的意外更改 Undefined 表现得像 StrictUndefined 对于 in 接线员。 #1448

  • 导入的宏可以访问异步环境中的当前模板全局变量。 #1494

  • PackageLoader will not include a current directory (.) path segment. This allows loading templates from the root of a zip import. #1467

版本3.0.1

已发布2021-05-18

  • 将MarkupSafe依赖项更新为>=2.0。 #1418

  • 将顶级名称标记为已导出,以便类型检查了解用户项目中的导入。 #1426

  • 修复一些在Python3.6.0中不可用的类型。 #1433

  • 不推荐使用不必要的警告 autoescapewith_ 扩展显示了更相关的上下文。 #1429

  • 修复了不推荐使用的调用 jinja2.Markup 没有任何争执。使用 markupsafe.Markup 取而代之的是。 #1438

  • 呼叫同步 render 对于异步模板,请使用 asyncio.run 在Python上>=3.7。这修复了Python3.10引入的一个弃用问题。 #1443

版本3.0.0

已发布2021-05-11

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

  • 将MarkupSafe依赖项增加到>=1.1。

  • 将Babel可选依赖项增加到>=2.1。

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

  • 添加类型提示。 #1412

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

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

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

  • 修复了一个错误,该错误导致自定义的仅限异步的筛选器在持续输入时失败。 #1279

  • 修复了在未定义的变量上错误地引发未定义错误,而不是 Undefined 被退回的日期为 NativeEnvironment 在Python3.10上。 #1335

  • 数据块可以标记为 required 。它们必须在某一时刻被覆盖,但不一定被直接的子级覆盖。 #1147

  • 不推荐使用 autoescapewith 扩展,它们被内置到编译器中。 #1203

  • 这个 urlize 筛选器识别 mailto: 链接和Take extra_schemes (或 env.policies["urlize.extra_schemes"] )承认其他计划。它尝试平衡URL中的圆括号,而不是忽略尾随字符。一般而言,解析已更新,以提高效率并匹配更多案例。没有方案的URL链接为 https:// 而不是 http://#522, #827, #1172#1195

  • 获取属性的筛选器,例如 mapgroupby 可以使用FALSE或空值作为默认值。 #1331

  • 修复了阻止在块或循环中设置的变量在自定义上下文函数中被访问的错误。 #768

  • 修复了导致作用域块访问特殊循环变量的错误。 #1088

  • 调用时更新模板全局变量 Environment.get_template(globals=...) 即使模板已经加载。 #295

  • 对于未执行的IF语句和条件表达式中的未定义筛选器,不要引发错误。 #842

  • 增列 is filteris test 测试以测试名称是否为已注册的筛选器或测试。这允许在使用模板之前检查筛选器是否可用。测试函数可以用 @pass_environment@pass_eval_context ,或 @pass_context#842#1248

  • 支持 pgettextnpgettext (消息上下文)在I18N扩展中。 #441

  • 这个 |indent 过滤器的 width 参数可以是缩进依据的字符串。 #1167

  • 解析器可以识别十六进制、八进制和二进制整数。 #1170

  • Undefined.__contains__ (in) raises an UndefinedError instead of a TypeError. #1198

  • Undefined is iterable in an async environment. #1294

  • NativeEnvironment supports async mode. #1362

  • Template rendering only treats \n, \r\n and \r as line breaks. Other characters are left unchanged. #769, #952, #1313

  • |groupby filter takes an optional default argument. #1359

  • 功能和滤镜装饰器已重新命名并统一。旧名称已弃用。 #1381

    • pass_context 取代 contextfunctioncontextfilter

    • pass_eval_context replaces evalcontextfunction and evalcontextfilter

    • pass_environment 取代 environmentfunctionenvironmentfilter

  • 异步支持不再需要精灵自己打补丁。它仍必须通过以下方式启用 Environment(enable_async=True)#1390

  • 覆盖 Context.resolve 已弃用,请重写 resolve_or_missing 取而代之的是。 #1380

版本2.11.3

已发布2021-01-31

  • 提高数据传输的速度 urlize 通过减少正则表达式回溯来过滤。电子邮件匹配要求在域部分的开头有一个单词字符,并且只需要TLD中的单词字符。 #1343

版本2.11.2

发布时间2020-04-13

  • 修复了导致可调用对象的错误 __getattr__ ,就像 Mock 被当做一个 contextfunction()#1145

  • 更新 wordcount 要触发的过滤器 Undefined 方法,通过将输入包装在 soft_str()#1160

  • 修复了在Python32位上显示回溯时的挂起问题。 #1162

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

  • 将更改恢复为 PackageLoader 从2.10开始,删除了对setupTools和pkg_resource的依赖,并添加了对名称空间包的有限支持。这些更改导致在使用PYTEST时出现问题。由于很难支持Python2和 PEP 451 同时,更改将恢复到3.0版。 #1182

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

  • 特价商品 namespace() 模板中的Assignment对象在异步环境中工作。 #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

版本2.11.0

已发布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

  • 为便于阅读,整型和浮点型文字可以使用‘_’分隔符,如12_345。 #923

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

  • 这个 trim Filter接受要修剪的可选字符串。 #828

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

  • 对包含大量空格的模板进行词法分析要快得多。 #857#858

  • 比较前后的圆括号被保留,因此 {{ 2 * (3 < 5) }} 输出“2”而不是“False”。 #755#938

  • 添加新 booleanfalsetrueintegerfloat 测试。 #824

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

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

  • 总是要回来 Undefined 当省略 else 子句中的 {{ 'foo' if bar }} 表达式,而与环境无关 undefined 班级。省略 else 子句是有效的快捷方式,在使用 StrictUndefined#710#1079

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

  • 只有在环境首次启用异步支持时才会加载它,以避免初始导入速度较慢。 #765

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

  • 在For循环中访问 loop 属性时,迭代器不会前进到当前迭代之前,除非 lengthrevindexnextitem ,或 last 都被访问过。这使得它不太可能破裂 groupby 结果。 #555#1101

  • 在异步环境中, loop 属性 lengthrevindex 适用于异步迭代器。 #1101

  • 在异步环境中,如果需要,将等待来自属性/属性访问的值。 #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

  • 模板中异常的Traceback显示了正确的行号和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 (例如通过 extendsimport ,或 include ),引发了一个 UndefinedError 始终如一。 select_template 将在尝试列表中显示未定义的消息,而不是空字符串。 #1037

  • TemplateSyntaxError can be pickled. #1117

版本2.10.3

已发布2019-10-04

  • 修复Babel入口点中的一个拼写错误 setup.py 这是在阻止安装。

版本2.10.2

已发布2019-10-04

  • 修复了Python 3.7不推荐使用的警告。

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

  • 使用Python3.7的S更好的回溯支持,以避免在使用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.9.6

发布2017-04-03

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

版本2.9.5

发布2017-01-28

  • 已恢复内部的原始epr _GroupTuple 因为这导致了Ansible的问题,这是一个意想不到的变化。 #654

  • 添加了对覆盖旧上下文的自定义上下文的重新支持 resolve 方法,因为人们很难发现这会导致回归。

  • 正确使用for循环的Else块的缓冲区。这会导致在2.x上出现无效语法错误,并在Python3上出现完全错误的行为 #669

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

  • 通过减少我们在Python3上用于标识符匹配的Unicode数据库转储,略微减少了内存占用 #666

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

版本2.9.4

发布2017-01-10

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

  • 增加字节码缓存版本,这在以前是由于疏忽而没有完成的。

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

  • 解决了在IF语句中包含块时,已知扩展块之后的顶级输出静默可能会生成无效代码的问题。 #651

  • 做了一个 truncate.leeway 默认可配置,以提高与较旧模板的兼容性。

版本2.9.3

发布2017-01-08

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

  • 当变量也从外部作用域读取时,为内部作用域中的变量赋值设置一致的行为。这现在在所有情况下都设置了预期的行为,但是它不会恢复可能对外部作用域进行有限赋值的旧行为。有关更多信息和讨论,请参阅 #641

  • 解决了以下问题 block scoped 不会利用新的作用域规则。在一些更奇怪的情况下,在局部作用域中被覆盖的变量不会出现在块中。

  • 更改的代码生成 with 语句以符合新的作用域规则。这解决了边缘情况下的一些不太可能的错误。这也引入了一个新的内部 With 可以由扩展使用的节点。

版本2.9.2

发布2017-01-08

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

  • 添加对以前未知的宏行为的支持。过去,在某些情况下可以显式地为宏提供调用方参数。虽然存在严重的错误和意外,但事实证明,这是一个常见的案例,被复制粘贴在周围。为了不完全破坏与最常见情况的向后兼容性,现在可以为调用者提供显式关键字参数(如果给出了显式缺省值)。 #642

版本2.9.1

发布2017-01-07

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

版本2.9

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

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

  • 添加了对以下各项的支持 generator_stop 关于受支持的Python版本(Python3.5及更高版本)

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

  • 通过新的异步模式添加了对Python3.6异步迭代器的支持。

  • 添加了筛选器默认设置和类似内容的策略。

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

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

  • 在扩展情况下支持TopLevel SET语句。

  • 为Python3用户恢复了Cycler的行为。

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

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

  • 依赖于MarkupSafe 0.23或更高版本。

  • 改进了 truncate 筛选器以支持更好的截断,以防字符串几乎不被截断。

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

  • 移植了修改版本的 tojson 从瓶子过滤到津佳,并将其与新的政策框架挂钩。

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

  • 在Python2上,ASCII字符串的类型化现在可以使用 compiler.ascii_str 政策。

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

  • 极大地改变了作用域系统,使其与模板设计人员和开发人员的期望更加一致。现在,不同的包含和导入构造之间没有更多神奇的区别。现在,上下文总是以相同的方式传播。剩下的唯一区别是 with contextwithout context

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

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

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

版本2.8.1

发布2016/12/29

  • 修复了 for_qs 旗帜为 urlencode

  • 修复了应用时的回归问题 int 设置为非字符串值。

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

版本2.8

发布2015-07-26代号替换

  • 增列 target 参数设置为urlize函数。

  • 添加了对以下各项的支持 followsymlinks 添加到文件系统加载器。

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

  • 添加了等值滤镜,帮助选择滤镜。

  • 已将缓存键更改为使用绝对文件名(如果可用),而不是加载名称。

  • 修正了某些迭代器的循环长度计算。

  • 更改了当人们打破默认编码时,JJJA强制字符串成为Python2中的本机字符串的方式。

  • 增列 make_logging_undefined 返回一个未定义的对象,该对象将故障记录到记录器中。

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

  • 实现了一个块 set 标签。

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

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

  • 变化 is number 将Decimal作为数字接受。

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

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

  • 添加了对环境的Finalize回调上的上下文/环境/valctx修饰符函数的支持。

  • 转义查询字符串以正确进行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 无法在环境和上下文筛选器上正常工作。

  • 修复了缺乏对字节码缓存的Python3支持。

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

  • 修复了在运行时出现有关Python3的警告的情况下对未定义和节点进行哈希处理的一些警告。

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

  • 修复了标题过滤器在大写字符串上不起作用的错误。

版本2.7

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

  • 选项加载器和前缀加载器现在分别分派源代码和模板查找,以便与所宣传的模块加载器结合使用。

  • 固定文件大小格式。

  • 添加了Babel提取的非静默选项。

  • 增列 urlencode 仅支持将UTF-8编码为URL安全使用的自动引号的过滤器。如果应用程序希望更改此编码,它们可以覆盖筛选器。

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

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

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

  • 允许 contextfunction 和其他要应用的装饰器 __call__

  • 中从换行符更改为不同符号的支持。 wordwrap 过滤。

  • 添加了对静默忽略Memcache错误的支持。

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

  • 添加了对块左侧空格剥离的更细粒度支持。

  • 增列 mapselectrejectselectattrrejectattr 过滤器。

  • 添加了对以下各项的支持 loop.depth 以确定代码在递归循环中的深度。

  • 已禁用PyPy和Python3的py_Compile。

版本2.6

发布2011-07-24,代号卷积

  • 内部属性现在会引发内部属性错误,而不是返回未定义的。这修复了将未定义的对象传递给预期的API的Python语义时的问题。

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

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

  • Groupby筛选器现在支持按属性的属性进行分组的点符号。

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

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

  • 总和过滤器现在可以按属性对值进行求和。这是一个向后不兼容的更改。以前筛选器的参数是可选的起始索引,默认为零。这现在成为该函数的第二个参数,因为它很少使用。

  • 与SUM类似,Sort Now也允许按属性对项目进行排序。

  • 像SUM和SORT一样,Join Now也能够将对象的属性连接为字符串。

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

  • 添加了映射测试,以查看对象是Dict还是具有相似接口的对象。

版本2.5.5

已发布2010-10/18

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

版本2.5.4

已发布2010-10/17

  • 修复了无法正确加载覆盖的扩展。

  • 为调试器解决cpython中的一个错误,该错误会在64位大端体系结构上导致段错误。

版本2.5.3

已发布2010-10/17

  • 修复了2.5.2中引入的运算符优先级错误。像“-foo.bar”这样的语句在表达式的第一部分(“(-foo).bar”)周围应用了隐式括号,而不是更正确的“-(foo.bar)”。

版本2.5.2

已发布2010-08-18

  • 改进了setup.py脚本,以便更好地处理人们可能仍有的假设 (--with-speedups )。

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

版本2.5.1

发布2010-08-17

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

  • 宏调用性能略有提高。

  • Babel提取现在可以正确地提取新样式的getText调用。

  • 使用变量 num 在NewStyle中,除复数计数以外的其他内容的getText将不再引发 KeyError

  • 已删除内置标记类并切换到markupSafe。为了向后兼容,纯的Python实现仍然存在,但被Jinsa开发人员从markupSafe中删除。调试支持包含一个单独的名为“调试支持”的功能,默认情况下处于禁用状态,因为它只与Python2.4相关

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

版本2.5

发布2010-05-29,代号不连贯

  • 通过添加对不区分大小写的搜索的支持,改进了排序过滤器(应该已经这样工作了很长一段时间)。

  • 修复了get属性常量折叠的错误。

  • 支持新样式的getText翻译,从而产生更好的模板内用户界面和更一致的目录。

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

版本2.4.1

发布2010-04-20

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

版本2.4

发布2010-04-13,代号关联

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

  • 添加了一个 ModuleLoader 可以从预编译源加载模板的。该环境现在提供了一种方法,可以将模板从已配置的加载器编译到压缩文件或文件夹中。

  • _Speedups C扩展现在支持Python3。

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

  • 延期现在是当务之急。

版本2.3.1

已发布2010-02-19

  • 修复了所有Python版本上的错误报告错误

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

版本2.3

发布2010-02-10,代号3000 Python

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

  • Include标签现在能够在多个模板之间进行选择,并且如果给出了模板列表,则采用存在的第一个模板。

  • 修复了在外部作用域中具有也用作内部框架中局部变量的参数的调用块的问题 #360

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

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

  • 添加了对通过Babel提取的翻译者注释的支持。

  • 添加了-语句扩展名。

  • 试验性的Python3支持。

版本2.2.1

发布2009-09-14

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

版本2.2

发布2009-09-13,代号为孔令辉

  • Include语句现在可以用 ignore missing 若要跳过非现有模板,请执行以下操作。

  • 优先顺序 not 养大的。现在可以写下 not foo in bar 作为的别名 foo not in bar 就像 Python 一样。在此之前,语法需要括号 (not (foo in bar) ),这很奇怪。

  • 修复了在定义宏或使用 {% call %} 在循环内添加标签。

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

  • 允许引用所包含模板中未在调用者框架中使用的外部作用域中的名称 #327

  • 修复了将名称用作迭代变量和常规变量时导致内部错误的错误 after 如果该变量未使用,则返回循环 before 循环。 #331

  • 添加了对可选选项的支持 scoped 块的修改器。

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

  • 添加了 meta 模块。

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

  • 加速扩展现在默认情况下是禁用的。

版本2.1.1

发布2008-12-25

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

版本2.1

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

  • 修复了嵌套循环和特殊循环变量的错误。在更改之前,内部循环在迭代后从外部循环变量覆盖循环变量。

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

  • 修复了词法分析器中的一个限制, {{ foo.0.0 }} 不可能。

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

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

  • 修复了带条件扩展的令人困惑的行为。循环在某些情况下被部分执行,即使它们不是可见区域的一部分。

  • 增列 sort 工作方式类似的过滤器 dictsort 而是针对任意序列。

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

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

  • 模板上下文现在是弱可引用的

  • 包含和导入“带上下文”现在转发所有变量,而不仅仅是初始上下文。

  • 添加了名为的循环辅助对象 cycler

  • 添加了一个名为 joiner

  • 添加了一个 compile_expression 方法添加到允许将JJJA表达式编译成可调用的Python对象的环境中。

  • 修复了urlize中的一个逃逸错误

版本2.0

发布2008-07-17,代号Jinja维图斯

  • 对象的订阅(查找属性和项)略有变化。现在可以通过使用点符号查找或括号语法来为属性或项赋予更高的优先级。这也略微改变了天冬氨酸转氨酶。 Subscript 已经消失,取而代之的是 GetitemGetattr

  • 添加了对扩展的预处理和令牌流筛选的支持。这将允许扩展允许在模板数据和类似内容中进行简化的GetText调用。

  • 增列 TemplateStream.dump

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

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

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

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

  • 修复了终结器中的错误

版本2.0rc1

发布2008-06-09

  • 《精灵2》的第一版。