如何 0 成本启动全员 AI 技能提升?戳> 了解详情
写点什么

Django 3.0 版本正式发布,支持异步功能

  • 2019-12-04
  • 本文字数:1627 字

    阅读完需:约 5 分钟

Django 3.0 版本正式发布,支持异步功能

2019 年 12 月 2 日,Django 官方博客发布了 Django 3.0 的发布说明,Django 3.0 正式版真的来啦!


Django 是一款用于开发 Web 应用程序的高级 Python 框架,Pinterest,Instagram 和 NASA 等网站都是使用该框架来编写的。虽然 Django 一直占据着 Python Web 开发界的头把交椅,但其不支持异步一直困扰着开发者,而 Django 3.0 正式版本终于支持 ASGI 了,这不免让开发者兴奋。

Django 3.0 的新功能

除了前文提到的支持 ASGI,Django 3.0 还涵盖了很多新的功能,下面我们就详细解读一下这些新功能。

Python 版本支持

Django 对 Python 版本的支持一向是很积极的,Django 3.0 只支持 Python 3.6 以上的版本,即 Python 3.6、3.7 和 3.8,Django 2.2.X 系列成为了最后一个支持 Python 3.5 的系列。

数据库支持

Django 3.0 在数据库支持方面的最大亮点是正式支持了 Maria 开发 DB 10.1 及更高版本。对于开发者来说,又多了一种数据库选择,且 MariaDB 与 MySQL 类似,但是存储引擎类型更多,查询效率更快。


在支持新数据库的同时,Django 3.0 版本也放弃了对某些数据库版本的支持。2019 年 12 月,Django 将结束对 PostgreSQL 9.4 的上游支持,转而支持 PostgreSQL 9.5 及更高版本;2021 年 7 月将结束对 Oracle 12.1 的上游支持,正式支持 Oracle 12.2 和 18c。另外,需要注意的是,Django 2.2 对 Oracle 12.1 的支持也将在 2022 年 4 月结束。

ASGI 支持

ASGI 支持可以说是开发者最期待的 Django 3.0 的新功能。ASGI 是异步网关协议接口,是介于网络协议服务和 Python 应用之间的标准接口,能够处理多种通用的协议类型,包括 HTTP,HTTP2 和 WebSocket。


Django 3.0 对 ASGI 模式的支持使得 Django 可以作为原生异步应用程序运维,原有的 WSGI 模式将围绕每个 Django 调用运行单个事件循环,以使异步处理层与同步服务器兼容。


在这个改造的过程中,每个特性都会经历以下三个实现阶段:


  • Sync-only,只支持同步,也就是当前的情况

  • Sync-native,原生同步,同时带有异步封装器

  • Async-native,原生异步,同时带同步封装器


需要注意的是,在异步事件循环时,Django 会阻止调用异步上下文中标记为“async unsafe”的代码,例如 ORM 操作。如果直接使用异步代码之前的 Django,那么很可能就会触发这个问题,如果发生了 SynchronousOnlyOperation 错误,需要仔细检查代码并将所有数据库操作移至同步子线程中。

PostgreSQL 的排斥约束

新 ExclusionConstraint 类允许在 PostgreSQL 上添加排除约束。使用 Meta.constraints 选项将约束添加到模型 。

模型字段选择的枚举

Django 3.0 可以自定义枚举类型 TextChoices、IntegerChoices 和 Choices 来定义 Field.choices。其中,TextChoices 和 IntegerChoices 类型用于文本和整数字段,Choices 类允许定义其他具体数据类型的兼容枚举。


以上这些自定义枚举类型几乎包含了所有用户可读的标签,同时可以通过枚举或者成员的属性来翻译和访问这些标签。更多详细信息和示例,请参见枚举类型

不再支持的功能

除了增加新功能,Django 3.0 版本也弃用了一些旧功能,包括但不限于:


  • django.db.backends.postgresql_psycopg2 模块

  • django.shortcuts.render_to_response()

  • DEFAULT_CONTENT_TYPE 设置

  • HttpRequest.xreadlines()

  • 支持 context 的 Field.from_db_value()和 Expression.convert_value()

  • field_name 的关键字参数 QuerySet.earliest()和 latest()

  • ForceRHRGIS 功能

  • django.utils.http.cookie_date()

  • staticfiles 和 admin_static 的模板标签库

  • django.contrib.staticfiles.templatetags.staticfiles.static;

版本兼容性问题

Django 3.0 发布之后,很多开发者都会关心 Django 3.0 对之前版本的兼容性。官方给出的建议是:第三方应用程序的开发者最好放弃使用 Django 2.2 之前的版本。开发者可以使用 python -Wd 运行包进行测试,如果出现了弃用警告,那么就要及时修复,以便应用程序能够与 Django 3.0 兼容。


除了版本兼容问题,关于数据库后端、安全、默认值等具体兼容性问题,可以查看此处


2019-12-04 13:536923
用户头像

发布了 497 篇内容, 共 345.6 次阅读, 收获喜欢 1927 次。

关注

评论

发布
暂无评论
发现更多内容

Apache服务器自动化运维与安全加固脚本详解

qife122

日志分析 Apache安全

限时赠书|Altair 助力高校数据科学教育:中山大学教授发布RapidMiner 权威教材

Altair RapidMiner

人工智能 AI 数据分析 制造业 RapidMiner

积极响应“人工智能+”行动,和鲸助力打造气象数据查询智能体示范应用,让风云“智慧可测”

ModelWhale

气象 数据查询 气象数据 人工智能+

SonicWall防火墙安全态势深度分析:固件解密与漏洞洞察

qife122

漏洞分析 SonicWall

揭秘LedgerCTF的AES白盒挑战:逆向工程与密码学分析

qife122

逆向工程 白盒密码学

“团队敏捷教练进阶课程”10月18-19日 · 在线A-CSM认证周末班

ShineScrum

Scrum 敏捷

淘宝闪购实时分析黑科技:StarRocks + Paimon撑起秋天第一波奶茶自由

阿里云大数据AI技术

阿里云 饿了么 StarRocks 物化视图 湖仓

千万许可黑洞?VMware 升级后,我们的IT预算差点崩盘

智驱前线

为什么舆情监测离不开海外社交媒体分析?

沃观Wovision

社交媒体 沃观Wovision 舆情监测系统 海外舆情监测

AI 在研发效能中的实际应用效果|《DevData 2025 研发效能基准报告》

思码逸研发效能

研发效能 研发效能度量 研发效能管理 智能编程 思码逸

MyEMS:开源能源管理的破局者

开源能源管理系统

开源 开源能源管理系统

MyEMS:开源驱动下的企业能源管理革新者 —— 从技术架构到 “双碳” 落地的实践之路

开源能源管理系统

开源 开源能源管理系统

财务人必看:这款RPA让你少熬夜,多成长

Techinsight

以Data+AI赋能产业,Kyligence荣膺2025中国数智化转型升级创新服务企业奖

Kyligence

码住!DolphinScheduler 常见故障 “急救指南”,一文解决服务、调度、连接等难题

白鲸开源

大数据 开源 技术 Apache DolphinScheduler 故障排查

(二)一文读懂数仓设计的核心规范:从层次、类型到生命周期

白鲸开源

数据库 大数据 数据仓库 命名规范

告别资料混乱!PJMan 让项目文件管理,简单到不用找

Tecjt_锦图科技

项目管理

再见 Cursor,Qoder 真香!这波要改写 AI 编程格局

阿里巴巴云原生

深入解析Web Components:Shadow DOM实战指南

qife122

前端开发 Web Components

秒开CAD装配体!制造业三维模型浏览/测量 / 剖切 / 爆炸一步到位

在路上

cad

WAVE SUMMIT深度学习开发者大会2025举行 文心大模型X1.1发布

Comate编码助手

百度 文心大模型 AI 编程 文心快码 文心大模型X1.1

看板方法的原则与实践

ShineScrum

Kanban 看板 看板工具

融云:当年搞出了「飞信」的师傅,如今竟扛着 200 多个国家的聊天、弹幕和日常?

融云 RongCloud

Jira 官宣停售 Data Center ,中国企业又双叒要迁移了?!

万事ONES

Jira Atlassian 国产化替代 ONES研发管理

WebGL开发数字孪生项目

北京木奇科技有限公司

数字孪生 软件外包公司 webgl开发

从苹果新品发布会看海外红人营销的流量密码

Wolink

苹果 出海 海外营销推广 沃链Wolink 达人营销

阅读破10万的学Go建议,不管初学Go还是进阶都值得一看!

王中阳Go

Go

舆情监测进入全球化时代,海外社交媒体分析是核心驱动力

沃观Wovision

社交媒体 沃观Wovision 舆情监测系统 海外舆情监测

NJet支持使用json格式的配置文件了

通明湖

必看!Apache DolphinScheduler 任务组因 MySQL 时区报错全解析与避坑指南

白鲸开源

MySQL 大数据 开源 Apache DolphinScheduler 任务调度

扫描全能王“翻页自动拍”功能上线,AI扫描提升教师教学材料电子化效率

合合技术团队

Django 3.0 版本正式发布,支持异步功能_编程语言_田晓旭_InfoQ精选文章