Django3.0 前瞻 支持异步通信
最近两年,Django的版本号提升得特别快,2.0还没有多久,很快就要到3.0了。 让我们先看看官方的路线图和时间表:
可以看到2019年12月即将发布3.0,2022年升级为4.0,但我们感觉2.2还在昨天。 这给广大的使用者和学习者带来了一定的学习压力和升级成本,但同时也代表Django的生态圈非常健康,使用者稳步上升,功能迭代迅速,是一种好的现象,我们要积极拥抱变化,拒绝落后。 接下来,让我们看看3.0究竟有哪些新东西和新变化。 Python兼容性不再支持3.6以下版本,仅支持3.6、3.7、3.8或者更高版本。 (按照Django的一贯策略,最新的Django请使用最新的python。) ASGI这是Django3.0最大的变化和提升! 通过支持ASGI,Django3.0开始具备全双工的异步通信能力,解决其最大的短板,不再被人诟病!(Tornado的支持者拿这个说事已经不是一天两天了) 支持ASGI并不是取代现有的WSGI,而是一种补充,也就是说我们现在有两种服务器运行模式了。 要注意的是,只有在启动了基于ASGI的服务器之后,才支持异步通信功能。在ASGI模式下,同时支持异步和同步通信。(WSGI模式下只能同步通信) Django官方提供了一份部署ASGI的文档https://docs.djangoproject.com/en/3.0/howto/deployment/asgi/,值得学习一下。 ASGI的引入也带来了一些需要注意的事项:Django现在会监视异步事件循环,并阻止你从异步上下文中调用被标记为 MariaDB支持MariaDB 10.1或者更高版本。 PostgreSQL通过为模型添加 过滤表达式现在可以在QuerySet过滤操作中直接使用输出布尔值的表达式,而不用先聚合再过滤。 模型字段可选项的枚举新增枚举类 小功能下面是一些细微的变化(省略了一些不常用的) django.contrib.admin
django.contrib.auth
django.contrib.sessions新的 Models
Django3.0 向后不兼容(简要介绍一下)
Django3.0中废弃的一些功能django.utils.encoding.force_text() and smart_text() 一些django.utils中的和http、translation、text等相关的内容。 Django 3.0中删除的功能以下方法、属性和设置被删除了:
总结从版本说明中我们可以看出,Django3.0最核心的变化是支持基于ASGI的异步通信,其它细微的改动一般用户基本感受不出来。 异步通信的功能据说是将django-channle这个外部库纳入进来,作为Django官方核心标准功能之一。无论如何,HTML5的websocket将可以直接和Django进行通信了。基于Django实现网页聊天室、网页QQ、网页微信等实时通信应用将变得简单,我们可以和长短轮询说再见了。 (更多Django相关内容和最新变化,请关注我的官网www.liujiangblog.com,相关最新教学视频也将第一时间发布!) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |