Django 3.0 发布了,此版本带来了一些新特性,其中最值得关注的应当是其开始支持异步功能。数据库
此前咱们报导过,有草案提出要让 Django 支持异步。汇集于 HTTP 中间件视图和 ORM,开发者要在 Django 中添加异步支持,同时维护对同步 Python 的支持,而且将彻底向后兼容。django
该设想最终会替换掉 Django 中的大多数阻塞部分,包括 Session、Auth、ORM 与 Handlers 等,使其原生支持异步。而同步 API 将继续存在并获得彻底支持,其中一些最终将转变为原生异步代码的同步包装器。安全
ASGI 模式将 Django 做为原生异步应用程序运行,原有的 WSGI 模式将围绕每一个 Django 调用运行单个事件循环,以使异步处理层与同步服务器兼容。服务器
在这个改造的过程当中,每一个特性都会经历如下三个实现阶段:异步
Django 3.0 开始提供运行 ASGI 应用支持,让 Django 逐渐具有异步功能。作了这一改动后,Django 如今会感知到异步事件循环,并将阻止从异步上下文调用标记为“异步不安全”的代码(例如 ORM 操做),若是开发者以前使用的是异步代码,则可能会触发。若是看到 SynchronousOnlyOperation 错误,能够仔细检查代码并将数据库操做移到同步子线程中。async
其它方面,Django 如今支持 MariaDB 10.1 及更高版本;新的 ExclusionConstraint 类能够在 PostgreSQL 上添加排除约束;输出 BooleanField 的表达式如今能够直接在 QuerySet 过滤器中使用,而无需先注解而后对注解进行过滤;自定义枚举类型 TextChoices、IntegerChoices 和 Choices 如今可用做定义 Field.choices 的方法。.net
此外还有一些小改动,详情查看更新说明:线程
须要注意的是,Django 3.0 支持 Python 3.六、3.7 与 3.8,Django 2.2.x 系列是最后一个支持 Python 3.5 的系列。官方同时也建议第三方应用做者放弃对 Django 2.2 以前的全部版本的支持。中间件