熱門Python網頁框架Django,開發團隊趕在2021年末,發布了第四主要更新版本,這個版本有大量新功能,有三個亮點特別值得注意,第一是使用新的RedisCache後端,提供內建Redis快取支援,第二則是Forms、Formsets和ErrorList現在使用模板引擎渲染,來簡化自定義工作,第三個亮點則是Django現在使用Python標準函式庫zoneinfo作為預設時區實作。

Redis是一個記憶體資料庫,能夠被當作快取使用,而在Django 4.0,開始提供內建Redis網頁應用程式快取支援,在使用之前,用戶需要設定好Redis伺服器,並且安裝Python綁定,而redis-py則是Django 4.0原生支援的綁定介面。

而Django現在預設使用Python標準函式庫中的zoneinfo,官方提到,這是從pytz轉換到zoneinfo的下一階段實行作法。在Django 3.2時,官方允許開發者使用非pytz時區,而到了Django 4.0,zoneinfo則成為預設實作,目前已經棄用pytz支援,並預計在Django 5.0中正式移除。

官方提到,zoneinfo是Python 3.9中Python標準函式庫的一部分,如果用戶使用的是Python 3.8,則backports.zoneinfo套件會在開發者安裝Django時一併安裝。目前時區的選擇、日期時間表單和模板中的當前時區轉換,還有UTC日期時間操作都不受預設時區實作改變影響。

但是當開發者使用的是非UTC時區,並且還在使用pytz normalize()和localize ()API,或是其他TIME_ZONE設定,就需要重新檢視程式碼,因為pytz和zoneinfo並不完全相等。官方提供開發者搬遷的寬緩時間,使用過渡USE_DEPRECATED_PYTZ配置,就可以在Django 4.0中繼續使用pytz,但是該配置會在Django 5.0時刪除。

另外,由zoneinfo作者所開發的pytz_deprecation_shim套件,可以協助開發者搬遷程式碼,更順利地銜接使用zoneinfo,該套件提供了墊片層,讓開發者安全地刪除pytz,並且有詳細的搬遷指南,說明搬遷到zoneinfo API的細節。

官方提到,隨著Django 4.0的釋出,Django 3.2的主要支援已經結束,最後一個小錯誤修復版本為3.2.10。由於Django 3.2是一個長期支援版本,因此在2024年4月之前,開發者都還是會收到安全性和資料丟失修補程式,另外,Django 3.1的擴充支援則正式結束,最終安全版本為3.1.14,官方鼓勵所有Django 3.1用戶都能升級到Django 3.2或是更高版本。

熱門新聞

Advertisement