Changelog?
3.0.0版?
未發布的
放棄對Python2.7和3.5的支持。
將MarkupSafe依賴項凹凸到>=1.1。
將Babel可選依賴項提升到>=2.1。
刪除標記為已棄用的代碼。
使用 PEP 451 用于加載模板的API
PackageLoader
. #1168修復導致導入的宏無法訪問當前模板的全局參數的錯誤。 #688
添加忽略功能
trim_blocks
使用+%}}
. #1036修復了一個錯誤,該錯誤導致自定義的僅異步過濾器在常量輸入時失敗。 #1279
修復在未定義的變量上錯誤地引發未定義錯誤,而不是
Undefined
被退回的日期為NativeEnvironment
在Python 3.10上。 #1335添加
required
屬性添加到必須在某個點重寫但不一定由直接子級重寫的塊 #1147不推薦使用
autoescape
和with
擴展部分 #1203
版本2.11.2?
發布日期:2020-04-13
修復導致可調用對象的錯誤
__getattr__
,像Mock
被視為contextfunction()
. #1145修復在python32位上顯示回溯時的掛起。 #1162
顯示引發的對象的未定義錯誤
AttributeError
on access不會導致遞歸錯誤。 #1177將更改還原為
PackageLoader
從命名空間中刪除了對setup2.10的依賴性和對pkg.10包的依賴性。這些更改在使用Pytest時引發了問題。因為在支持python2和 PEP 451 同時,更改將恢復到3.0。 #1182修復刪除新行時錯誤消息中的行號。 #1178
特殊
namespace()
模板中的賦值對象在異步環境中工作。 #1180在修復中間標記之前刪除空白行時
lstrip_blocks
啟用。 #1138NativeEnvironment
doesn't evaluate intermediate strings during rendering. This prevents early evaluation which could change the value of an expression. #1186
版本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()
. #931Int和float字面值可以用''uu'分隔符來編寫,以確保易讀性,如12_345。 #923
修復導致死鎖的錯誤
LRUCache.setdefault
. #1000這個
trim
filter接受一個可選的字符串來修剪。 #828一個新的
jinja2.ext.debug
擴展名添加{{% debug %}}
標記以快速轉儲當前上下文和可用的篩選器和測試。 #174 , #798, #983添加新
boolean
,false
,true
,integer
和float
測驗。 #824環境就是環境
finalize
函數只應用于表達式的輸出(常量或非常量),而不是靜態模板數據。 #63當提供多個路徑到
FileSystemLoader
,模板可以與目錄同名。 #821總是返回
Undefined
當省略else
A中的子句{{{{ 'foo' if bar }}}}
無論環境如何undefined
班級。省略else
子句是有效的快捷方式,使用時不應引發錯誤StrictUndefined
. #710 , #1079修復的行為
loop
控制變量,如length
和revindex0
在發電機上循環時。 #459, #751, #794 , #993在一個初始的異步環境中,它只支持一次緩慢的導入。 #765
在異步環境中
|map
如果需要,過濾器將等待過濾器調用。 #913在for循環中訪問
loop
屬性時,迭代器不會在當前迭代之前提前,除非length
,revindex
,nextitem
或last
被訪問。這使得它不太可能破裂groupby
結果。 #555 , #1101在異步環境中
loop
屬性length
和revindex
為異步迭代器工作。 #1101如果需要從屬性awaited/attribute屬性中訪問屬性,則將從異步環境中獲取。 #1101
PackageLoader
doesn't depend on setuptools or pkg_resources. #970PackageLoader
has limited support for PEP 420 namespace packages. #1097支持
os.PathLike
中的對象FileSystemLoader
和ModuleLoader
. #870NativeTemplate
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
過濾器。 #550Cython編譯的修飾為上下文函數的函數將被傳遞給上下文。 #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
(例如通過extends
,import
或include
),引發一個UndefinedError
一貫地。select_template
將在嘗試列表中顯示未定義的消息,而不是空字符串。 #1037TemplateSyntaxError
can be pickled. #1117
版本2.10.2?
發布日期:2019-10-04
版本2.10.1?
發布日期:2019-04-06
SandboxedEnvironment
安全把手str.format_map
以防止代碼通過不受信任的格式字符串執行。沙箱已經處理好了str.format
.
版本2.10?
發布日期:2017-11-08
添加了一個名為
OverlayScope
它可以用于創建一個未優化的范圍,該范圍將從派生上下文中查找所有變量。增加了一個
in
類似于in操作符的測試。這可以與reject
和select
.補充
previtem
和nextitem
循環上下文,提供對循環中上一個/下一個項的訪問。如果該項不存在,則該值未定義。補充
changed(*values)
循環上下文,提供一種簡單的方法來檢查自上次迭代(或者更確切地說,自上次方法調用以來)以來某個值是否發生了更改。增加了一個
namespace
創建特殊對象的函數,該對象允許使用set
標簽。這可以用于跨作用域傳遞數據,例如從循環體到循環后的代碼。增加了一個
trimmed
修飾語{{% trans %}}
去除換行符和周圍空白。還添加了一個新策略,以便為所有人啟用此策略trans
阻礙。這個
random
過濾器不再是錯誤的常數折疊,每次呈現模板時都會生成一個新的隨機選擇。 #478增加了一個
unique
過濾器。 #469補充
min
和max
過濾器。 #475為所有比較運算符添加了測試:
eq
,ne
,lt
,le
,gt
,ge
. #665import
statement cannot end with a trailing comma. #617, #618indent
filter will not indent blank lines by default. #685添加
reverse
的參數dictsort
過濾器。 #692添加
NativeEnvironment
它將模板呈現為本機python類型而不是字符串。 #708向塊添加了篩選器支持
set
標簽。 #489tojson
filter marks output as safe to match documented behavior. #718解決了一個錯誤,在該錯誤中,獲取用于跟蹤的調試局部變量可以修改模板上下文。
修復了一個有很多
{{% elif ... %}}
塊導致“縮進級別太多”錯誤。這些塊現在編譯為本機elif ..:
而不是else: if ..:
#759
2.5.5版?
發布日期:2017-01-28
2.9.4版?
發布日期:2017-01-10
2.2.3版?
發布日期:2017-01-08
2.2.2版?
發布日期:2017-01-08
版本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
如你所料。極大地改變了范圍界定系統,使其更符合模板設計者和開發人員的期望?,F在不同的include和import構造之間不再有什么神奇的區別了。上下文現在總是以相同的方式傳播。唯一剩下的區別是
with context
和without context
.這個
with
和autoescape
標簽現在是內置的。添加新的
select_autoescape
功能,幫助配置更好的自動轉義更容易。修復了訪問異步生成器屬性時沙盒中的運行時錯誤。
2.2.1版?
發布日期:2016-12-29
修正了
for_qs
旗urlencode
.應用時固定回歸
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.CodeGenerator
和jinja2.runtime.Context
通過向環境中添加兩個新屬性 (code_generator_class
和context_class
) #404在環境的finalize回調中添加了對context/environment/evalctx decorator函數的支持。
正確轉義urlencode的查詢字符串。以前在那個地方砍傷是沒有逃過的。
將“base”參數添加到“int”篩選器。
2.7.2版?
發布日期:2014-01-10
前綴加載器未將局部變量正確轉發給內部加載程序?,F在已經修復了。
安全問題:將文件系統緩存的默認文件夾更改為特定于用戶的,并且在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錯誤的支持。
添加了在模板中保留尾隨新行的支持。
為在塊的左側剝離空白添加了更細粒度的支持。
補充
map
,select
,reject
,selectattr
和rejectattr
過濾器。為添加了支持
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.3版?
發布日期:2010-10-17
修正了2.5.2中引入的運算符優先級錯誤。類似“的陳述”-美食酒吧“在表達式的第一部分((-foo.bar”)周圍應用了隱式括號,而不是更正確的部分”-(美食酒吧)".
2.5.1版?
發布日期:2010-08-17
從模板調用的函數引發的StopIteration異?,F在被截獲并轉換為未定義的。這解決了很多調試的麻煩。(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?
2010年4月13日發布,代號相關性
環境模板加載函數現在透明地通過模板對象傳遞給它。這使得可以從傳遞給模板的模板對象導入或擴展。
增加了一個
ModuleLoader
它可以從預編譯源加載模板。該環境現在提供了一種方法,可以將配置好的加載程序中的模板編譯到zip文件或文件夾中。u speedups C擴展現在支持python3。
增加了對自動轉義切換部分的支持和對求值上下文的支持。
擴展現在有了優先權。
版本2.3?
2010年2月10日發布,代號3000條 Python
版本2.2?
發布日期:2009-09-13,代號:Kong
include語句現在可以標記為
ignore missing
跳過不存在的模板。優先權
not
提高?,F在可以寫了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?
發布于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
對象的訂閱(查找屬性和項)從稍有變化?,F在可以通過使用點符號查找或括號語法賦予屬性或項更高的優先級。這也稍微改變了AST。
Subscript
已經不見了,取而代之的是Getitem
和Getattr
.增加了對擴展的預處理和令牌流過濾的支持。這將允許擴展允許在模板數據和類似內容中簡化gettext調用。
補充
TemplateStream.dump
.添加了對隱式字符串文本連接缺少的支持。
{{{{ "foo" "bar" }}}}
等于{{{{ "foobar" }}}}
else
對于條件表達式是可選的。如果未給出,則計算為false
.通過提供位置來改進未定義值的錯誤報告。
filesizeformat
過濾器現在默認使用十進制前綴,可以用第二個參數設置為二進制模式。修正了終結器中的錯誤