Python Django 3.0 框架正式发布

2019 年 12 月 2 日,Django 团队推出了大家期盼已久的 Django 3.0,各位 Python 前端程序员惊呼,求求你们,别更新啦,学不过来啦 ~~~

下面是来自 Django 3.0 发布现场的最新报道,欲知详情,请前往发布现场亲自群殴,地址如下:
https://docs.djangoproject.com/en/3.0/releases/3.0/

纵览

Django 团队提出以下几点优势,引诱大家升级到新版 Django:

  • 增加了新功能,并做出了改进(呆鸟注:与库克说的“我们这次推出的 iPhone 是迄今为止最棒的 iPhone” 有异曲同工之妙);

  • 修复了不少 Bug(呆鸟注:这不是应该的吗?);

  • 旧版 Django 将不再有安全方面的更新(呆鸟注:这是赤果果的威胁,-_-||);

  • 升级每次发布的新版本,可以让你的代码库保持与时俱进的同时,又没有那么痛苦,为此,Django 团队还很贴心地提供了 Django 升级新版指南。

    https://docs.djangoproject.com/en/3.0/howto/upgrade-version/

Python 兼容性

Django 3.0 支持 Python 3.6、3.7、3.8,不再支持 Python 3.5,Django 2.2.x 是最后支持 Python 3.5 的版本。

支持旧版 Django 的第三方支持库

Django 3.0 发布以后,官方团队建议第三方支持的作者赶紧抛弃所有对 Django  2.2 以前版本的支持。如果出现废弃警告,可运行 python -Wd 测试现有第三方支持库。修复所有废弃警告后,第三方支持库就可以兼容 Django 3.0 了。

Django 新特性

支持 MariaDB

万众期待的 MariaDB 终于正式加入到 Django 大家庭了,Django 3.0 开始支持 MariaDB 10.1 及之后的版本。

支持 ASGI

Django 3.0 开始,异步编程也加入了 Django 大家庭,终于可以运行 ASGI 了。

不过话说 ASGI 是个什么鬼?简单说,ASGI 的大名叫 Asynchronous Server Gateway Interface,即异步服务器网关接口,是 WSGI 的小弟,应用于多服务器与应用框架,是向后兼容 WSGI 的异步与同步 APP 标准。

在可预见的未来里,(呆鸟注:差不多就是 Terminators 出现以前吧),Django 将支持 WSGI 与 ASGI 两种标准。不过,异步功能只能在运行 ASGI 的应用程序里实现。

除非想动手编写异步代码,上手实践,否则不需要切换应用程序,Django 团队还提供了部署 ASGI的官档,有兴趣的可以到这里看:

https://docs.djangoproject.com/en/3.0/howto/deployment/asgi/

官宣特意提醒大家,异步功能还有副作用,Django 3.0 会监控异步时间循环(asynchronous event loops),在异步环境里,还会阻止调用标记为“async unsafe”(异步风险)的代码,比如 ORM 操作。如果之前用过 Django 异步代码,也会触发不正确操作。遇到 SynchronousOnlyOperation 错误时,要仔细检查代码,并把数据库操作移动到同步子线程里。

PostgreSQL 的排除约束

新的 ExclusionConstraint 类可以让 PostgreSQL 添加排除约束。Meta.constraints 选项可以把这些约束添加到 Model。

筛选表达式

现在,可以直接在 QuerySet 筛选器使用输出 BooleanField 表达式 ,不必先注释,再对筛选注释。

Model 字段选择枚举(Enumeration)

现在,可以用自定义枚举类型,如 TextChoices、IntegerChoices、Choices 定义 Field.choicesTextChoices 与 IntegerChoices 类型支持文本与整数字段。Choices 类可以定义兼容其它具体数据类型的枚举。这些自定义枚举类型的标签易读、易懂,枚举或其成员可以通过指定属性访问这些标签。详见 Django 官档的枚举类型说明,https://docs.djangoproject.com/en/3.0/ref/models/fields/#field-choices-enum-types。

小微改动

django.contrib.adin

  • 添加 ModelAdmin.list_display 中 admin_order_field 属性的支持;

  • 新的 ModelAdmin.get_inlines() 方法可以基于 request 或 model 实例指定内联(inlines);

  • Select2 从 4.0.3 升级到了 4.0.7;

  • jQuery 从 3.3.1 升级到了 3.4.1.

django.contrib.auth

  • PasswordResetConfirmView 里的新 reset_url_token 属性支持指定 token 参数,以显示某个组件的密码重置 URLs;

  • 添加 BaseBackend 类,简化验证后端自定义操作;

  • 添加 get_user_permissions() 方法作为现有 get_group_permissions() 方法的镜像;

  • 为 django.contrib.auth.forms 里的用户名、电子邮件添加 HTML autocomplete 属性,为管理员浏览密码提供更好的交互体验。

Models

  • 添加 MD5、SHA1、SHA224、SHA256、SHA384、SHA512  等哈希数据库函数;

  • 添加 Sign 数据库函数;

  • FilePathField 现在支持可回调的 Path

  • Avg 与 Sum 增加对 distinct 参数的支持;

  • 添加 SmallAutoField,操作与 AutoField 类似,但只接受指定限制(不同数据库,值的限制不同)内的值,Django 支持的所有数据库都可以安全使用 1 至 32767 之间的值;

  • FileField.upload_to 现已支持 pathlib.Path;

  • CheckContraint 现已支持 MySQL 8.0.16 +;

Requests 与 Responses

  • 允许 memoryview 内容初始 HttpResponse

  • 为了在模板里使用,HttpRequest.headers 现可用下划线(如,user_agent) 代替连字符(user-agent)进行查找。

好啦,小编就不每个都介绍了,对 Django 3.0 感兴趣的朋友,可以直接点击下面链接查看 。 

https://docs.djangoproject.com/en/3.0/releases/3.0/ 

关注小猿公众号,每天学习一道Python题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值