自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Django 4.0 正式發(fā)布,新的密碼哈希器和 Redis 緩存后端

開發(fā) 前端 Redis
Django 4.0 正式發(fā)布,4.0 版本支持 Python 3.8、3.9 和 3.10。隨著 Django 4.0 的發(fā)布,Django 3.2 的主流支持已經(jīng)結(jié)束。

Django 4.0 正式發(fā)布,4.0 版本支持 Python 3.8、3.9 和 3.10。隨著 Django 4.0 的發(fā)布,Django 3.2 的主流支持已經(jīng)結(jié)束。此版本主要有如下亮點:

  • 新的 RedisCache 后端為使用 Redis 緩存提供了內(nèi)置支持。
  • 現(xiàn)在使用模板引擎呈現(xiàn) Forms、Formsets 和 ErrorList ,以簡化自定義的過程。
  • 引入新的密碼哈希函數(shù) scrypt,但因為需要更多內(nèi)存且依賴 OpenSSL 1.1+ ,不是默認(rèn)啟用項
  • Python 標(biāo)準(zhǔn)庫的 zoneinfo 現(xiàn)在作為 Django 中的默認(rèn)時區(qū)。
  • 新增函數(shù)式唯一約束。
  • ...

重要更新

zoneinfo 作為默認(rèn)時區(qū)

Django 3.2 允許使用非 pytz 時區(qū)。Django 4.0 是 zoneinfo 作為默認(rèn)時區(qū):棄用 pytz 且將在 Django 5.0 中刪除它。zoneinfo 是 Python 3.9 標(biāo)準(zhǔn)庫的一部分,如果你在使用 Python 3.8 ,則會自動安裝 zoneinfo 包。

注意,如果你處于非 utc(世界標(biāo)準(zhǔn)時間) 時區(qū),且在使用 pytz normalize() 和 localalize () api,那你可能設(shè)置了TIME_ZONE ,需要審查一下代碼。4.x 系列版本周期有一個過渡性的 use_depreccated_pytz 設(shè)置,允許從 pytz 慢慢過渡到 zoneinfo,這個設(shè)置將在 Django 5.0 中刪除。

此外,zoneinfo 作者創(chuàng)建的 pytz_deprecation_shim 包用于幫助從 pytz 進(jìn)行遷移,這個包提供 shims 來安全地移除 pytz,還有一個詳細(xì)的遷移指南,展示如何移動到新的 zoneinfo api。漸進(jìn)更新可以用 pytz_deprecation_shim和use_depreccated_pytz 這兩個過渡設(shè)置。

函數(shù)的唯一約束

UniqueConstraint() 的新 *expressions 位置參數(shù)可以在表達(dá)式和數(shù)據(jù)庫函數(shù)上創(chuàng)建函數(shù)式唯一約束。例如:

 

  1. from django.db import models 
  2. from django.db.models import UniqueConstraint 
  3. from django.db.models.functions import Lower 
  4.  
  5.  
  6. class MyModel(models.Model): 
  7.     first_name = models.CharField(max_length=255) 
  8.     last_name = models.CharField(max_length=255) 
  9.  
  10.     class Meta: 
  11.         indexes = [ 
  12.             UniqueConstraint( 
  13.                 Lower('first_name'), 
  14.                 Lower('last_name').desc(), 
  15.                 name='first_last_name_unique'
  16.             ), 
  17.         ] 

使用該 Meta.constraints選項將函數(shù)唯一約束添加到模型中 。

增加 scrypt 密碼哈希器

新的 scrypt 密碼哈希器比 PBKDF2 更安全,建議使用。但它不是默認(rèn)選項,因為它需要 OpenSSL 1.1 以上版本和更多的內(nèi)存。

Redis 緩存后端

新的

django.core.cache.backends.redis.RedisCache 緩存后端為使用 Redis 緩存提供了內(nèi)置支持。此功能需要 redis-py 3.0.0 或更高版本。

基于模板的表單渲染

使用模板引擎渲染表單,如用于表單的 render(), get_context() 和 template_name,用于表單集的五個渲染相關(guān)的屬性和方法。

次要更新項:

django.contrib.admin

  • admin/base.html 模板現(xiàn)在有一個 header ,包含管理站點標(biāo)題的新模塊。
  • ModelAdmin.get_formset_kwargs() 方法允許自定義傳遞給表單集構(gòu)造函數(shù)的關(guān)鍵字參數(shù)。
  • 側(cè)邊欄的導(dǎo)航有一個快速過濾器工具欄。
  • 新的上下文變量模型(包含每個模型的模型類)被添加到 AdminSite.each_context() 方法中。
  • 新 ModelAdmin.search_help_text 屬性允許為搜索框指定描述性文本
  • jQuery 從 3.5.1 版本升級到 3.6.0。

django.contrib.auth

  • PBKDF2 密碼散列器的默認(rèn)迭代計數(shù)從 260,000 增加到 320,000。
  • 新的 LoginView.next_page 屬性和 get_default_redirect_url()方法允許在登錄后自定義重定向。

django.contrib.gis

  • 添加了對 SpatiaLite 5 的支持。
  • GDALRaster 現(xiàn)在允許在任何 GDAL 虛擬文件系統(tǒng)中創(chuàng)建柵格。

django.contrib.postgres

  • PostgreSQL 后端現(xiàn)在支持通過服務(wù)名稱進(jìn)行連接。詳情請參見 PostgreSQL 連接配置。
  • 新 AddConstraintNotValid 操作允許在 PostgreSQL 上創(chuàng)建檢查約束,而無需驗證所有現(xiàn)有行是否滿足新約束。
  • 新 ValidateConstraint 操作允許驗證 AddConstraintNotValid 在 PostgreSQL 上創(chuàng)建的檢查約束 。
  • 新 ArraySubquery() 表達(dá)式允許使用子查詢在 PostgreSQL 上構(gòu)建值列表。
  • 新的trigram_word_similar 查找和 TrigramWordDistance() 和 TrigramWordSimilarity() 表達(dá)式允許使用三元組詞匯相似性(trigram word similarity)。

django.contrib.staticfiles

  • ManifestStaticFilesStorage 現(xiàn)在將 JavaScript 源映射引用的路徑換成它們自己的散列對應(yīng)路徑。
  • ManifestFilesMixin 和 ManifestStaticFilesStorage 的新參數(shù) manifest_storage 允許自定義清單文件的存儲。

緩存

新的異步 API:

  1. django.core.cache.backends.base.BaseCache開始使緩存后端異步兼容。新的異步方法都有 a 前綴的名稱,例如aadd(),aget(),aset(), aget_or_set(),或adelete_many()。 

以后 a 前綴一般會用于方法的異步變體。

CSRF

  • CSRF 保護(hù)現(xiàn)在參考 Origin 標(biāo)頭(如果存在)。為此需要對 CSRF_TRUSTED_ORIGINS 設(shè)置進(jìn)行一些更改。

國際化

  • 添加了對馬來語的支持和翻譯。

通用視圖

  • DeleteView 現(xiàn)在使用 FormMixin,允許您提供一個 Form 子類,例如帶有確認(rèn)刪除之類的復(fù)選框。

日志

  • SQL 調(diào)用中使用的數(shù)據(jù)庫別名現(xiàn)在作為額外的上下文,與每條消息一起傳遞給 django.db.backends 記錄器。

管理命令

  • runserver 管理命令現(xiàn)在支持 --skip-checks選項。
  • 在 PostgreSQL 上,dbshell 現(xiàn)在支持指定密碼文件。
  • 新的 BaseCommand.suppressed_base_arguments屬性允許在輸出中阻止不支持的命令選項。
  • 新的 startapp——exclude 和 startproject——exclude 選項允許從模板中排除目錄

模塊

  • 新 QuerySet.contains(obj)方法返回查詢集是否包含給定的對象,會嘗試以最簡單和最快的方式執(zhí)行查詢。
  • 數(shù)據(jù)庫函數(shù) Round() 有新的 precision 參數(shù),允許指定舍入的小數(shù)位數(shù)。
  • QuerySet.bulk_create() 現(xiàn)在在使用 SQLite 3.35+ 時設(shè)置對象的主鍵。
  • DurationField 現(xiàn)在支持在 SQLite 上乘以和除以標(biāo)量值。
  • QuerySet.bulk_update() 現(xiàn)在返回更新后的對象數(shù)。
  • 新的 Expression.empty_result_set_value 屬性允許指定函數(shù)在空集上使用時返回什么值。
  • QuerySet.select_for_update()的 skip_locked 參數(shù),現(xiàn)在允許在 MariaDB 10.6 以上版本使用。
  • Lookup現(xiàn)在可以在QuerySet 注釋、聚合中使用表達(dá)式,且可以直接在過濾器中使用。

請求和響應(yīng)

  • SecurityMiddleware 現(xiàn)在增加了跨來源打開器策略(Cross-Origin-Opener-Policy)標(biāo)頭的值:'same-origin',以防止交叉來源的彈出窗口請求共享同一瀏覽器的上下文,使用 COOP 隔離窗口是一種針對跨域攻擊的深度防御保護(hù),尤其是像 Spectre 這樣的攻擊(允許外泄加載到共享瀏覽上下文中的數(shù)據(jù))。

信號

  • 用于 pre_migrate() 和 post_migrate() 信號的新 stdout 參數(shù),允許將輸出重定向到一個類似流的對象。
  • 為了在測試時正確捕獲,它應(yīng)該優(yōu)先于 并且在發(fā)出詳細(xì)輸出時。pre_migrate()post_migrate()sys.stdoutprint()

模板

floatformat 模板過濾器現(xiàn)在允許使用 u 后綴強(qiáng)制禁用本地化。

測試

  • django.test.utils.setup_databases() 的新參數(shù) serialized_aliases 可以決定哪些 DATABASES別名測試數(shù)據(jù)庫應(yīng)該將自身狀態(tài)序列化,以允許使用 serialized_rollback 功能。
  • Django 測試運(yùn)行器現(xiàn)在支持 --buffer 并行測試選項。
  • DiscoverRunner 的新 logger 參數(shù)允許使用 Python 記錄器進(jìn)行日志記錄。
  • Django 測試運(yùn)行器現(xiàn)在支持--shuffle 以隨機(jī)順序執(zhí)行測試的選項。
  • test --parallel 選項現(xiàn)在支持 auto 值:為每個處理器核心運(yùn)行一個測試進(jìn)程。
  • TestCase.captureOnCommitCallbacks()現(xiàn)在捕獲執(zhí)行 transaction.on_commit() 回調(diào)時添加的新回調(diào)。

Django 4.0 是一個超大版本更新,除了上述更新以外還包含一些功能的棄用,以及不向后兼容的更新項,完整版更新內(nèi)容可在更新公告中查看。

責(zé)任編輯:未麗燕 來源: 今日頭條
相關(guān)推薦

2021-09-18 10:24:08

DjangoRedis緩存后端

2010-01-26 09:46:16

2023-06-24 22:14:23

2012-08-31 13:49:32

2018-07-05 10:55:25

數(shù)據(jù)庫MongoDB 4.0多文檔事務(wù)

2011-03-30 16:52:43

RichFaces

2013-11-05 09:27:37

LinuxLinux KerneLinux內(nèi)核

2011-05-31 09:09:59

Ylmf OS 4.0

2023-10-24 08:31:24

UIProfiler性能

2012-08-31 15:36:02

2025-01-23 09:09:29

2011-07-29 09:31:32

JDK 7

2012-08-02 17:38:38

瀏覽器

2024-04-18 08:04:47

ElectronChrome升級

2023-12-07 11:38:25

2018-07-19 16:10:50

多云云計算混合云

2017-09-25 14:22:26

Swift4.0正式發(fā)布添加歸檔

2013-02-28 09:33:58

DjangoPython

2023-06-28 00:40:01

ECMAScriptWeakMapSymbol

2019-03-29 09:51:23

軟件開發(fā)者 性能
點贊
收藏

51CTO技術(shù)棧公眾號