Django 3.0的新功能
谷歌翻译的,我修正并且添加了一些内容.凑合看吧.
ASGI支持
Django 3.0通过提供对作为ASGI应用程序运行的支持,开始了使Django具有完全异步功能的旅程。
注:ASGI是WSGI的扩展,向下兼容WSGI,克服了WSGI的弱点,支持异步并发.有异步并发需求可以重新在生产环境下进行部署.
这是对我们现有的WSGI支持的补充。Django打算在可预见的将来为这两者提供支持。但是,异步功能仅对在ASGI下运行的应用程序可用。
除非您想开始尝试异步代码,否则无需切换应用程序,但是如果您想了解更多信息,我们有 关于使用ASGI进行部署的文档。
请注意,作为此更改的副作用,Django现在知道异步事件循环,并将阻止您从异步上下文中调用标记为“async unsafe”的代码(例如ORM操作)。如果您之前使用的是异步代码中的Django,则操作不正确可能会触发它。如果看到SynchronousOnlyOperation
错误,请仔细检查代码并将所有数据库操作移至同步子线程中。
PostgreSQL的排斥约束
新增了 ExclusionConstraint
类, 允许在PostgreSQL上添加排除约束。使用Meta.constraints
选项将约束添加到model 。
Filter 表达式
新增了BooleanField
,可以直接在QuerySet
过滤器中使用输出的表达式,而不必首先注释,然后针对注释进行过滤。
在 model field choices中使用枚举
自定义枚举类型TextChoices
,IntegerChoices
和Choices
现在作为一个的方式来定义Field.choices
。为文本和整数字段提供了类型TextChoices
和IntegerChoices
类型。在 Choices
类允许定义为其他具体的数据类型兼容的枚举。这些自定义枚举类型支持人类可读的标签,可以通过枚举或其成员上的属性来翻译和访问这些标签。有关更多详细信息和示例,请参见枚举类型。
次要功能
django.contrib.admin
- 增加了对
admin_order_field
的ModelAdmin.list_display属性的
支持。 - 新增的
ModelAdmin.get_inlines()
方法允许根据请求或模型实例指定内联。 - Select2库从4.0.3版本升级到4.0.7。 # Select2 是一个非常好用的下拉框插件,支持很多功能。
- jQuery从版本3.3.1升级到版本3.4.1。
django.contrib.auth
- 中的新
reset_url_token
属性PasswordResetConfirmView
允许指定显示为密码重置URL组件的令牌参数。 - 添加了
BaseBackend
类,以简化身份验证后端的自定义。 - 添加了
get_user_permissions()
方法以镜像现有get_group_permissions()
方法。 autocomplete
在用户名,电子邮件和密码字段的小部件中添加了HTML 属性,django.contrib.auth.forms
以更好地与浏览器密码管理器进行交互。createsuperuser
现在,当非交互模式下未提供相应的命令行参数时,现在退回到密码和必填字段的环境变量。REQUIRED_FIELDS
现在支持ManyToManyField
。- 新
UserManager.with_perm()
方法将返回具有指定权限的用户。 - PBKDF2密码哈希器的默认迭代计数从150,000增加到180,000。
django.contrib.gis
- 允许MySQL空间查找功能在实际几何上运行。以前的支持仅限于边界框。
- 添加了
GeometryDistance
PostGIS支持的功能。 - 在中增加了对
furlong
单位的 支持Distance
。 - 该
GEOIP_PATH
设置现在支持pathlib.Path
。 - 该
GeoIP2
班现在接受 。pathlib.Path
path
django.contrib.postgres
- 新功能
RangeOperators
有助于避免与一起使用的SQL运算符中的拼写错误RangeField
。 - 新
RangeBoundary
表达式表示范围边界。 - new
AddIndexConcurrently
和RemoveIndexConcurrently
class允许CONCURRENTLY
在PostgreSQL上创建和删除索引。
django.contrib.sessions
- 新
get_session_cookie_age()
方法允许动态指定会话cookie的年龄。
django.contrib.syndication
- 在中添加了
language
class属性,django.contrib.syndication.views.Feed
以自定义供稿语言。默认值是get_language()
不是LANGUAGE_CODE
。
缓存
add_never_cache_headers()
然后never_cache()
将private
指令添加到Cache-Control
标题中。
文件存储
Storage.get_alternative_name()
如果已经存在带有上载名称的文件,则新方法允许自定义生成文件名的算法。
表格
- 表单集可以
can_order
通过设置ordering_widget
属性或覆盖来控制在订购表单时使用的小部件get_ordering_widget()
。
国际
- 增加了
LANGUAGE_COOKIE_HTTPONLY
,LANGUAGE_COOKIE_SAMESITE
和LANGUAGE_COOKIE_SECURE
设置来设置的HttpOnly
,SameSite
以及Secure
对语言的cookie标志。这些设置的默认值保留以前的行为。 - 添加了对乌兹别克语的支持和翻译。
记录
- 的新
reporter_class
参数AdminEmailHandler
允许提供一个django.views.debug.ExceptionReporter
子类,以自定义ADMINS
在DEBUG
is 时发送到站点的回溯文本False
。
管理命令
- 新选项允许在搜索要编译的文件时忽略特定目录。
compilemessages --ignore
.po
showmigrations --list
现在显示的--verbosity
是大于等于2的日期时间 。- 在PostgreSQL上,
dbshell
现在支持客户端TLS证书。 inspectdb
现在,OneToOneField
当外键具有唯一或主键约束时,它会进行自省。- 新
--skip-checks
选项将在运行命令之前跳过正在运行的系统检查。 - 在和 选项现在存放在XZ档案(支持模板,)和LZMA档案(,)。
startapp --template
startproject --template
.tar.xz
.txz
.tar.lzma
.tlz
型号
添加了
Sign
数据库功能。数据库功能的新
is_dst
参数Trunc
确定了不存在和不明确的日期时间的处理方式。connection.queries
现在显示PostgreSQL上的语句。COPY … TO
FilePathField
现在接受的可调用对象path
。允许使用对称的中间表作为自引用
ManyToManyField
。该
name
属性CheckConstraint
,UniqueConstraint
和Index
现在支持应用标签和类插值使用'%(app_label)s'
和'%(class)s'
占位符。新
Field.descriptor_class
属性允许模型字段通过覆盖其描述符来自定义get和set行为 。添加了
SmallAutoField
,它的行为类似于“AutoField
例外”,只是它只允许某个值(取决于数据库)下的值。从1
到的值32767
在Django支持的所有数据库中都是安全的。AutoField
,BigAutoField
以及SmallAutoField
现在从继承IntegerField
,BigIntegerField
并SmallIntegerField
分别。系统检查和验证器现在也已正确继承。CheckConstraint
现在在MySQL 8.0.16+上受支持。这种新的
allows_group_by_selected_pks_on_model()
方法django.db.backends.base.BaseDatabaseFeatures
允许对子句进行优化, 使其仅需要选定模型的主键。默认情况下,仅PostgreSQL上的托管模型支持它。GROUP BY
要为非托管模型启用仅主键优化,您必须对PostgreSQL数据库引擎进行子类化,并根据需要覆盖features类方法。有关示例,请参见子类化内置数据库后端。
GROUP BY
allows_group_by_selected_pks_on_model()
请求和响应
- 允许
HttpResponse
用memoryview
内容初始化 。 - 例如,在Django模板中使用时,
HttpRequest.headers
现在允许使用下划线(例如user_agent
)代替连字符来进行查找。
安全
X_FRAME_OPTIONS
现在默认为'DENY'
。在旧版本中,该X_FRAME_OPTIONS
设置默认为'SAMEORIGIN'
。如果您的网站使用其自身的框架,则需要明确设置它们才能继续工作。X_FRAME_OPTIONS = 'SAMEORIGIN'
SECURE_CONTENT_TYPE_NOSNIFF
设置现在默认为True
。启用后SECURE_CONTENT_TYPE_NOSNIFF
,将 在所有尚未SecurityMiddleware
设置的X-Content-Type-Options:nosniff标头上设置该 标头。SecurityMiddleware
现在可以发送 Referrer-Policy标头。
测试
- 新的测试
Client
参数raise_request_exception
允许控制是否应在测试中引发在请求期间引发的异常。该值默认True
为向后兼容。如果是,False
并且发生异常,则测试客户端将返回500响应,其中包含属性exc_info
,一个元组提供发生的异常的信息。 - 可以使用新选项通过测试名称模式选择要运行的测试和测试用例。
test -k
assertHTMLEqual()
现在,由所使用的HTML比较 将将相同字符引用的文本,字符引用和实体引用视为等效。- Django测试运行器现在支持在支持的浏览器上进行硒测试的无头模式。添加
--headless
选项以启用此模式。 - Django测试运行器现在支持
--start-at
和--start-after
选项,以从特定的顶级模块开始运行测试。 - Django测试运行器现在支持
--pdb
在每个错误或失败时生成调试器的选项。
Django 3.0的新功能的更多相关文章
- 一张图看懂ANSYS17.0 流体 新功能与改进
一张图看懂ANSYS17.0 流体 新功能与改进 提交 我的留言 加载中 已留言 一张图看懂ANSYS17.0 流体 新功能与改进 原创2016-02-03ANSYS模拟在线模拟在线 模拟在线 ...
- Eviews 8.0&9.0界面新功能介绍
Eviews 8.0&9.0界面新功能介绍 本文其中一些是自己的整理,也有一些是经管之家论坛中一位热心.好学坛友的整理,其中只是简单介绍一下这两个新版本的部分特性,分享出来,有兴趣的看客可以一 ...
- Kafka 0.11新功能介绍:空消费组延迟rebalance
Kafka 0.11新功能介绍:空消费组延迟rebalance 在0.11之前的版本中,多个consumer实例加入到一个空消费组将导致多次的rebalance,这是由于每个consumer inst ...
- Apache Flink 1.9.0版本新功能介绍
摘要:Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时,提供支持流处理和批处理两种类型应用的功能.目前,Apache Flink 1.9 ...
- Xamarin.Form 5.0: 新功能和控件以及调试改进
上周在.NET Conf 2020,Scott Hunter(.NET),Maddy Leger(微软移动开发工具-Xamarin项目经理)和David Ortinau(首席项目经理,移动开发人员工具 ...
- geotrellis使用(二十)geotrellis1.0版本新功能及变化介绍
目录 前言 变化情况介绍 总结 一.前言 之前版本是0.9或者0.10.1.0.10.2,最近发现更新成为1.0.0-2077839.1.0应该也能称之为正式版了吧.发现其中有很多变化, ...
- Eviews 9.0新版本新功能——预测(Auto-ARIMA预测、VAR预测)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 9.预测功能 新增需要方法的预测功能:Auto ...
- MyReport报表引擎2.1.0.1新功能
MyReport报表引擎(免Flex开发集成版)的使用场合适用于以传统html构建的系统,希望集成MyReport报表引擎的报表预览.打印和报表设计功能,而且不须要进行Flex相关的二次开发的用户.M ...
- Kafka 2.0 ConsumerGroupCommand新功能
一直觉得kafka-consumer-groups.sh的输出信息有点少,总算在2.0中得到了改善.新版本ConsumerGroupCommand增加了查看成员信息.组状态信息,算是弥补了之前的不足. ...
随机推荐
- 三天的Python课程
基础很sb但必须熟练掌握: 第一天就是Python的简单介绍与简单的接触.基本都是概念性的东西,需要知道一个非常便捷的IDE工具:pycharm,以后的编程就靠它了.还有就是%s和%d的格式化输出.运 ...
- Perl 笔记
目录 Perl 学习 常用记录 基础 1. 运行perl 2. 字符串 3. 变量 4. 条件 5. 循环 6. 运算符 7. 时间日期 8. 子程序(函数) 9. 引用 10. 格式化输出 11. ...
- 临时解决执行 Composer Install 返回 Killed 的问题
昨天在 Linux 服务器上部署 PHP 项目时遇到了一个问题,系统为 Centos 7 ,1 核 1G 的配置.通过 Git 拉取代码后,由于是基于 Laravel 框架的项目,所以需要使用 Com ...
- PHP的isset()、is_null、empty()使用总结
这几个变量判断函数在PHP开发中用的其实挺多的,而且粗看上去都差不多,但其实还是有不少的区别的,如果搞不清楚,也许就会遗留一些潜在的bug, 包括我自已也遇到过这样的坑,比如有一次我就遇到过用empt ...
- HTML、HTML5重难点
一.XHTML与HTML的区别 文档结构 XHTML DOCTYPE 是强制性的 <html>中的 XML namespace 属性是强制性的 <html>.<head& ...
- Vue——解决使用第三方组件库时无法修改默认样式的问题(使用 /deep/ )
最近在开发一个基于Vue的后台管理系统,其中使用了element-ui第三方ui组件库.使用过组件库的人都知道,第三方组件往往会有一些默认的样式,而有些又是我们想要改变的. 一.基础(了解 <s ...
- 树莓派安装nextcloud、Seafile
参考博文:http://bbs.eeworld.com.cn/thread-505579-1-1.html http://blog.sina.com.cn/s/blog_6f55d8210102xia ...
- 李德胜系列——李德胜和CPC人的初心
很久很久以前,有三条恶龙盘踞着村庄,恶龙们及其爪牙对村民敲骨吸髓,逼着村民卖儿鬻女.苦不堪言.但是村民们却对此压迫习以为常,逆来顺受. 后来,一个书生来到了这个村庄,告诉村民,不许跪,也没有人值得他们 ...
- JS如何阻止事件冒泡
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default5.aspx. ...
- VScode小白简介
前言 现在使用Vscode编码的人越来越多,凭借着免费,开源,轻量,跨平台的特点收货了一大批忠实粉丝 最近因项目需要开始使用Vscode,但不知为何,感觉有点力不从心,不知道该怎么用 首先想到去官 ...