資訊中心 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_FIELDAppConfig.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時一行一行地處理數據,而不需要一次性將所有數據整體加載。

 

 

优彩-网址