其他分享
首页 > 其他分享> > Django3.2 新特性

Django3.2 新特性

作者:互联网

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

全局级别配置:

DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'

app级别配置:

from django.apps import AppConfig

class MyAppConfig(AppConfig):
    default_auto_field = 'django.db.models.AutoField'
    name = 'my_app'

模型级别指定:

from django.db import models

class MyModel(models.Model):
    id = models.AutoField(primary_key=True)

函数式索引

Index()新增 *expressions 位置参数 ,可以为表达式创建函数类型的索引。

具体方法是在模型的Meta类中添加indexes选项。

比如:

from django.db import models
from django.db.models import F, Index, Value
from django.db.models.functions import Lower, Upper


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

    class Meta:
        indexes = [
            Index(
                Lower('first_name'),
                Upper('last_name').desc(),
                name='first_last_name_idx',
            ),
            Index(
                F('height') / (F('weight') + Value(5)),
                name='calc_idx',
            ),
        ]

支持pymemcache

新的 django.core.cache.backends.memcached.PyMemcacheCache 缓存后端,支持使用 pymemcache库。但是需要 pymemcache 3.4.0或更高版本

admin后台新增两个装饰器

也就是:

在某些场景下,使用装饰器比直接使用属性更方便。

小功能

总结

没有什么重要的内容。版本号太激进了。

标签:name,models,AppConfig,特性,django,Django3.2,Django,app
来源: https://www.cnblogs.com/django-dev/p/14773931.html