Django4.0搶先看棍潘,結(jié)果令人失望

Django 4.0版本說明

2021年12月7日尊剔,Django正式發(fā)布了4.0版本!

這貨的版本提升速度也太快了痛单,完全名不副實嘿棘!再看看新功能,這都更新了啥桦他?

Python 依賴

Django 4.0依賴Python 3.8+蔫巩。也就是說低于這個版本的Python不行。

新功能

zoneinfo 成為默認的時區(qū)庫

Python的標(biāo)準(zhǔn)庫zoneinfo替代了過去的pytz庫快压,成為Django的默認時區(qū)庫圆仔。

Django3.2是個過渡版本,可以使用非pytz的時區(qū)庫蔫劣。

Django4.0中坪郭,zoneinfo成為默認時區(qū)庫。

Django5.0中脉幢,pytz會被移除歪沃。

zoneinfo從Python3.9開始成為內(nèi)置標(biāo)準(zhǔn)庫。如果你用的是Python3.8嫌松,安裝Django的時候沪曙,自動安裝的是 backports.zoneinfo 庫。所以萎羔,一條基本原則是:最新的Django配最新的Python液走。

pytz改為使用zoneinfo,基本是透明無感的贾陷。比如當(dāng)前時區(qū)的選擇缘眶、在表單和模板中時區(qū)的轉(zhuǎn)換等等操作都不受影響。

但是髓废,如果您使用了非 UTC 時區(qū)巷懈,并使用pytz normalize()localize()API,或者對TIME_ZONE進行了設(shè)置慌洪,那么你需要審核您的代碼顶燕,因為pytzzoneinfo并不完全相同凑保。

為了給代碼審計留出時間,Django提供了一個過渡性的USE_DEPRECATED_PYTZ 設(shè)置割岛,將它設(shè)置為True愉适,表示允許pytz在 Django4.x 版本發(fā)布周期期間繼續(xù)使用犯助。此設(shè)置將在 Django 5.0 中刪除癣漆。

此外,zoneinfo 庫的作者特意提供了一個pytz_deprecation_shim包剂买,用戶幫助你從pytz遷移到zoneinfo惠爽。有需要的可以詳細了解一下這個包。

點評:換個時區(qū)庫就能從3升級到4瞬哼?

函數(shù)類唯一性約束

UniqueConstraint() 新增了一個*expressions位置參數(shù)婚肆,可用于創(chuàng)建唯一性約束,在表達式上或數(shù)據(jù)庫函數(shù)上坐慰。例如:

from django.db import models
from django.db.models import UniqueConstraint
from django.db.models.functions import Lower


class MyModel(models.Model):
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)

    class Meta:
        constraints = [
            UniqueConstraint(
                Lower('first_name'),
                Lower('last_name').desc(),
                name='first_last_name_unique',
            ),
        ]

使用模型的Meta.constraints選項將功能唯一性約束添加到模型中 较性。

點評:你有多大概率用上這個新特性?或者结胀,你明白它的用法了嗎赞咙?

scrypt 密碼哈希算法

新的scrypt 密碼哈希算法比 PBKDF2 算法更安全,推薦使用糟港。但是攀操,它不是默認設(shè)置,因為它需要 OpenSSL 1.1+ 依賴和更多內(nèi)存秸抚。

點評:這么細節(jié)嗎速和?

Redis緩存后端

新增內(nèi)置的django.core.cache.backends.redis.RedisCache緩存后端,為直接使用 Redis 緩存提供了內(nèi)置支持剥汤。但是需要 redis-py 3.0.0 或更高版本颠放。

點評:這個還算有點意思

基于模板引擎的表單渲染

FormsFormsetsErrorList現(xiàn)在使用模板引擎進行渲染以增強自定義的能力吭敢。詳見新的render()碰凶, get_context()方法以及 template_name屬性。

點評:表單用得本來就不多

一些小特性

  • admin后臺的導(dǎo)航側(cè)邊欄新增了快速過濾工具欄
  • auth模塊的PBKDF2密碼哈希的迭代次數(shù)提高到320000
  • 新增異步的緩存后端django.core.cache.backends.base.BaseCache 省有。相應(yīng)的異步方法以a開頭痒留,比如aadd(), aget(), aset(), aget_or_set()adelete_many()
  • 通用視圖DeleteView 現(xiàn)在繼承了 FormMixin類蠢沿,允許你提供一個Form子類伸头,用于提供一些自定制,比如用于確認刪除的復(fù)選框舷蟀。同時還允許它使用 django.contrib.messages.views.SuccessMessageMixin
  • runserver管理命令新增 --skip-checks選項恤磷,可以跳過一些檢查過程面哼。

  • 新增 startapp --excludestartproject --exclude 選項,允許指定排除模板中的目錄扫步。

  • 新增QuerySet.contains(obj)方法魔策,用于判定查詢集中是否包含給定的對象。它會嘗試以最簡單和最快的方式執(zhí)行查詢河胎。

  • 其它更多小細節(jié)未一一列出

更多向后不兼容和廢棄功能的細節(jié)參考官方文檔闯袒,實在無法逐一列出。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末游岳,一起剝皮案震驚了整個濱河市政敢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌胚迫,老刑警劉巖喷户,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異访锻,居然都是意外死亡褪尝,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門期犬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來河哑,“玉大人,你說我怎么就攤上這事哭懈≡致” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵遣总,是天一觀的道長睬罗。 經(jīng)常有香客問我,道長旭斥,這世上最難降的妖魔是什么容达? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮垂券,結(jié)果婚禮上花盐,老公的妹妹穿的比我還像新娘。我一直安慰自己菇爪,他們只是感情好算芯,可當(dāng)我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凳宙,像睡著了一般熙揍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上氏涩,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天届囚,我揣著相機與錄音有梆,去河邊找鬼。 笑死意系,一個胖子當(dāng)著我的面吹牛泥耀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蛔添,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼痰催,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了作郭?” 一聲冷哼從身側(cè)響起陨囊,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎夹攒,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體胁塞,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡咏尝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了啸罢。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片编检。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖扰才,靈堂內(nèi)的尸體忽然破棺而出允懂,到底是詐尸還是另有隱情,我是刑警寧澤衩匣,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布蕾总,位于F島的核電站,受9級特大地震影響琅捏,放射性物質(zhì)發(fā)生泄漏生百。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一柄延、第九天 我趴在偏房一處隱蔽的房頂上張望蚀浆。 院中可真熱鬧,春花似錦搜吧、人聲如沸市俊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽摆昧。三九已至,卻和暖如春僵刮,著一層夾襖步出監(jiān)牢的瞬間据忘,已是汗流浹背鹦牛。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留勇吊,地道東北人曼追。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像汉规,于是被迫代替她去往敵國和親礼殊。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 感謝關(guān)注我的個人博客和教程官網(wǎng)liujiangblog.com 2019年4月1日针史,Django官方如期發(fā)布了2....
    liujiangblog閱讀 1,289評論 1 0
  • Django 3.1將于2020年8月發(fā)布晶伦!從3.1版本開始,Django將逐步原生支持異步啄枕,比如異步視圖和中間件...
    liujiangblog閱讀 888評論 0 2
  • 查詢操作 查找是數(shù)據(jù)庫操作中一個非常重要的技術(shù)婚陪。查詢一般就是使用filter、exclude以及get三個方法來實...
    龍小白1010閱讀 851評論 0 2
  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個 Awesome - XXX 系列...
    aimaile閱讀 26,503評論 6 427
  • 一 **** ORM模型介紹 Ⅰ* ORM频祝,全稱Object Relational Mapping泌参,中文叫做對象關(guān)...
    幼姿沫閱讀 456評論 0 0