2021年4月13日 星期二

Django 3.2 LTS 新功能

上週 2021/04/06 Django 官方正式釋出了新版本,

Django 3.2 LTS ,

同時也是 Django 3 最後一個長期穩定版,

今天就簡單來介紹

Django 3.2 LTS 新功能

Django 是基於 Python 語言 的網站框架,

Django 3.2 支援 Python 3.6 之後的版本,

要使用 Django 3.2 就盡量使用官方所建議的版本吧。


Automatic AppConfig discovery

以往在新增 Django AppConfig 的類別時,

都需要以

app.apps.appconfig

的方式加入 settings.py 中的 INSTALLED_APPS

在 Django 3.2 版本之後,

支援只在 INSTALLED_APPS 打上 app name 即可

Customizing type of auto-created primary keys

在定義 model 中,

若沒有設定主鍵,(primary_key=True)

Django 會自動給予 AutoField 的主鍵設定,

在 Django 3.2 版本之後,

預設將使用 BigAutoField  作為預設值。

若不想使用 BigAutoField  可指定要預設的格式

DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'

Functional indexes

支援在 expressions 表達式 與 資料庫函式 建立索引,

官方也針對此功能給了範例說明

pymemcache support

新的

django.core.cache.backends.memcached.PyMemcacheCache

支援 pymemcache 3.4.0 以上版本的 library。

New decorators for the admin site

新增兩個裝飾器 @display 和 @actions ,

例如:

def is_published(self, obj):
    return obj.publish_date is not None
is_published.boolean = True
is_published.admin_order_field = '-publish_date'

在 Django 3.2 之後可以寫成:

@admin.display(
    boolean=True,
    ordering='-publish_date'
)
def is_published(self, obj):
    return obj.publish_date is not None

其他還有許多新增與修改的功能,

在此處就不再多贅述,

總之新版本新功能表示隨著時代演進有在進步,

不及格研究室都表示支持。

沒有留言: