資訊中心 Info
當前位置: 愛尚教育 > 資訊中心 >
django3.2 新特性
發布日期:2021-09-19 閱讀次數:

2021年4月6日正式發布了Django 3.2!這是一個長支持版本,至少有3年的維護期。

而上一個長支持版本Django2.2將在2022年4月結束支持。

Django 3.2支持Python 3.6, 3.7, 3.8, 3.9或者更高版本。

Django 3.2只支持MySQL 5.7,或更高版本。對于MySQL 5.6的支持在 2021年4月到期。

Django 3.2只支持PostgreSQL 9.6,或更高版本。

自動發現AppConfig

以往,大多數可插拔的app應用中,都在apps.py文件中定義了一個AppConfig類。

大多數人都不知道apps.py的功能和用法,更不知道可以在根目錄下的 __init__.py 中定義一個 default_app_config 變量指向AppConfig類。這個指向是一個鉤子,可以在初始化app的時候,自動調用我們定義的一些代碼。

現在,我們不需要這么麻煩了,只要你在任何應用的apps.py文件中定義了一個AppConfig類,Django會自動發現,并調用它,不需要再編寫 default_app_config 變量了,它也被廢棄了。

我們也不用糾結在 INSTALLED_APPS 中寫app的名字,還是AppConfig子類名了,因為兩者一樣。

自動創建的主鍵的類型發生變化

當你編寫一個模型的時候,如果你沒有定義一個帶有 primary_key=True 屬性的主鍵字段,Django會幫你自動創建一個,也就是id字段。這個自動創建的字段類型可以通過 DEFAULT_AUTO_FIELD AppConfig.default_auto_field 屬性進行預定義。

為了向后兼容,Django3.2之前,這個自動創建的主鍵的類型,默認被設置為 AutoField ,但是Django3.2之后,官方將它改為 BigAutoField 了。

為了防止過去的代碼和新版本Django之間的沖突,你可以如下顯式地設置,使其依然使用 AutoField

admin后臺新增兩個裝飾器

也就是:

  • @display() 裝飾器:其功能和 list_display 或者 readonly_fields 一樣
  • @action() 裝飾器:類似原來的actions屬性。

在某些場景下,使用裝飾器比直接使用屬性更方便。

小功能

  • admin后臺開始支持外觀主題
  • auth的PBKDF2密碼哈希迭代次數又提高了,鹽的長度也提高到了128位
  • loaddata和dumpdata管理命令現在支持XZ和LZMA格式

  • 現在不需要活動的數據庫連接,就可以執行makemigrations命令了。

  • 新增 django.core.paginator.Paginator.get_elided_page_range() 方法,允許生成一個頁面范圍,其中一些值會 被省略。如果你的頁面數量比較大,那么這個方法有助于在模板中生成合理數量的頁面鏈接。

  • 新增響應頭部屬性 HttpResponse.headers ,未來用于替代 HttpResponse 本身。目前兩者共存,作用相同。

  • 對于 SECRET_KEY 這個settings.py中最重要的安全配置,不再是第一次加載時進行檢查,而是在第一次訪問時檢查。這有助于運行一些不依賴于 SECRET_KEY 的管理命令。但是在沒有提供 SECRET_KEY 的情況下,調用configure()方法后,如果你發生對 settings.SECRET_KEY 的訪問,將彈出 ImproperlyConfigured 異常。

  • 新增JSONL序列化器。用于在dumpdata和loaddata時一行一行地處理數據,而不需要一次性將所有數據整體加載。

优彩-网址