Django4。0正式发布,新的密码哈希器和Redis缓存后端
Django 4.0 正式发布,4.0 版本支持 Python 3.8、3.9 和 3.10。随着 Django 4.0 的发布,Django 3.2 的主流支持已经结束。此版本主要有如下亮点:新的 RedisCache 后端为使用 Redis 缓存提供了内置支持。 现在使用模板引擎呈现 Forms、Formsets 和 ErrorList ,以简化自定义的过程。 引入新的密码哈希函数 scrypt,但因为需要更多内存且依赖 OpenSSL 1.1+ ,不是默认启用项 Python 标准库的 zoneinfo 现在作为 Django 中的默认时区。 新增函数式唯一约束。 ...
重要更新
zoneinfo 作为默认时区
Django 3.2 允许使用非 pytz 时区。Django 4.0 是 zoneinfo 作为默认时区:弃用 pytz 且将在 Django 5.0 中删除它。zoneinfo 是 Python 3.9 标准库的一部分,如果你在使用 Python 3.8 ,则会自动安装 zoneinfo 包。
注意,如果你处于非 utc(世界标准时间) 时区,且在使用 pytz normalize() 和 localalize () api,那你可能设置了TIME_ZONE ,需要审查一下代码。4.x 系列版本周期有一个过渡性的 use_depreccated_pytz 设置,允许从 pytz 慢慢过渡到 zoneinfo ,这个设置将在 Django 5.0 中删除。
此外,zoneinfo 作者创建的 pytz_deprecation_shim 包用于帮助从 pytz 进行迁移,这个包提供 shims 来安全地移除 pytz ,还有一个详细的迁移指南,展示如何移动到新的 zoneinfo api。渐进更新可以用 pytz_deprecation_shim和use_depreccated_pytz 这两个过渡设置。
函数的唯一约束
UniqueConstraint() 的新 *expressions 位置参数可以在表达式和数据库函数上创建函数式唯一约束。例如:from django.db import models from django.db.models import UniqueConstraint from django.db.models.functions import Lower class MyModel(models.Model): first_name = models.CharField(max_length=255) last_name = models.CharField(max_length=255) class Meta: indexes = [ UniqueConstraint( Lower("first_name"), Lower("last_name").desc(), name="first_last_name_unique", ), ]
使用该 Meta.constraints 选项将函数唯一约束添加到模型中 。
增加 scrypt 密码哈希器
新的 scrypt 密码哈希器比 PBKDF2 更安全,建议使用。但它不是默认选项,因为它需要 OpenSSL 1.1 以上版本和更多的内存。
Redis 缓存后端
新的django.core.cache.backends.redis.RedisCache 缓存后端为使用 Redis 缓存提供了内置支持。此功能需要 redis-py 3.0.0 或更高版本。
基于模板的表单渲染
使用模板引擎渲染表单,如用于表单的 render() , get_context() 和 template_name ,用于表单集的五个渲染相关的属性和方法 。
次要更新项:
django.contrib.admin admin/base.html 模板现在有一个 header ,包含管理站点标题的新模块。ModelAdmin.get_formset_kwargs() 方法允许自定义传递给表单集构造函数的关键字参数。侧边栏的导航有一个快速过滤器工具栏。 新的上下文变量模型(包含每个模型的模型类)被添加到 AdminSite.each_context() 方法中。新 ModelAdmin.search_help_text 属性允许为搜索框指定描述性文本jQuery 从 3.5.1 版本升级到 3.6.0。
django.contrib.auth PBKDF2 密码散列器的默认迭代计数从 260,000 增加到 320,000。 新的 LoginView.next_page 属性和 get_default_redirect_url() 方法允许在登录后自定义重定向。
django.contrib.gis 添加了对 SpatiaLite 5 的支持。 GDALRaster 现在允许在任何 GDAL 虚拟文件系统中创建栅格。
django.contrib.postgres PostgreSQL 后端现在支持通过服务名称进行连接。详情请参见 PostgreSQL 连接配置 。 新 AddConstraintNotValid 操作允许在 PostgreSQL 上创建检查约束,而无需验证所有现有行是否满足新约束。新 ValidateConstraint 操作允许验证 AddConstraintNotValid 在 PostgreSQL 上创建的检查约束 。新 ArraySubquery() 表达式允许使用子查询在 PostgreSQL 上构建值列表。新的 trigram_word_similar 查找和 TrigramWordDistance() 和 TrigramWordSimilarity() 表达式允许使用三元组词汇相似性(trigram word similarity)。
django.contrib.staticfiles ManifestStaticFilesStorage 现在将 JavaScript 源映射引用的路径换成它们自己的散列对应路径。ManifestFilesMixin 和 ManifestStaticFilesStorage 的新参数 manifest_storage 允许自定义清单文件的存储。
缓存
新的异步 API: django.core.cache.backends.base.BaseCache 开始使缓存后端异步兼容。新的异步方法都有 a 前缀的名称,例如aadd() ,aget() ,aset() , aget_or_set() ,或adelete_many() 。
以后 a 前缀一般会用于方法的异步变体。
CSRF CSRF 保护现在参考 Origin 标头(如果存在)。为此需要对 CSRF_TRUSTED_ORIGINS 设置进行一些更改。
国际化 添加了对马来语的支持和翻译。
通用视图
DeleteView 现在使用 FormMixin ,允许您提供一个 Form 子类,例如带有确认删除之类的复选框。
日志 SQL 调用中使用的数据库别名现在作为额外的上下文,与每条消息一起传递给 django.db.backends 记录器。
管理命令 runserver 管理命令现在支持 --skip-checks 选项。在 PostgreSQL 上, dbshell 现在支持指定密码文件。新的 BaseCommand.suppressed_base_arguments 属性允许在输出中阻止不支持的命令选项。新的 startapp——exclude 和 startproject——exclude 选项允许从模板中排除目录
模块 新 QuerySet.contains(obj) 方法返回查询集是否包含给定的对象,会尝试以最简单和最快的方式执行查询。数据库函数 Round() 有新的 precision 参数,允许指定舍入的小数位数。QuerySet.bulk_create() 现在在使用 SQLite 3.35+ 时设置对象的主键。DurationField 现在支持在 SQLite 上乘以和除以标量值。QuerySet.bulk_update() 现在返回更新后的对象数。新的 Expression.empty_result_set_value 属性允许指定函数在空集上使用时返回什么值。QuerySet.select_for_update() 的 skip_locked 参数,现在允许在 MariaDB 10.6 以上版本使用。Lookup 现在可以在QuerySet 注释、聚合中使用表达式,且可以直接在过滤器中使用。
请求和响应 SecurityMiddleware 现在增加了跨来源打开器策略(Cross-Origin-Opener-Policy)标头的值:"same-origin" ,以防止交叉来源的弹出窗口请求共享同一浏览器的上下文,使用 COOP 隔离窗口是一种针对跨域攻击的深度防御保护,尤其是像 Spectre 这样的攻击(允许外泄加载到共享浏览上下文中的数据)。
信号 用于 pre_migrate() 和 post_migrate() 信号的新 stdout 参数,允许将输出重定向到一个类似流的对象。为了在测试时正确捕获,它应该优先于 并且在发出详细输出时。 pre_migrate()post_migrate()sys.stdoutprint()
模板 floatformat 模板过滤器现在允许使用 u 后缀强制禁用本地化。
测试 ¶ django.test.utils.setup_databases() 的新参数 serialized_aliases 可以决定哪些 DATABASES 别名测试数据库应该将自身状态序列化,以允许使用 serialized_rollback 功能。Django 测试运行器现在支持 --buffer 并行测试选项。DiscoverRunner 的新 logger 参数允许使用 Python 记录器进行日志记录。Django 测试运行器现在支持 --shuffle 以随机顺序执行测试的选项。test --parallel 选项现在支持 auto 值:为每个处理器核心运行一个测试进程。TestCase.captureOnCommitCallbacks() 现在捕获执行 transaction.on_commit() 回调时添加的新回调。
Django 4.0 是一个超大版本更新,除了上述更新以外还包含一些功能的弃用,以及不向后兼容的更新项,完整版更新内容可在更新公告 中查看。
曾经卖肾换iPhone的少年小伙如今生活到底如何?5月30日讯相信大家都知道,在智能手机圈中一直都有着这样一个段子卖肾买苹果手机,但这并非段子,而是确有其事,因为几乎每次苹果发布iPhone手机新品后,iPhone手机高昂的售价确
让你24小时不用手机,你会如何解决社会发展越来越快,我们的生活已经离不开手机了。特别是智能手机的普及率,外加低廉高速的移动网络,使得人手一部手机。智能手机不在是用来通话的工具,手机更多的是用来上网,游戏,视频,自拍
索尼仍将向全球正式展示PlayStation5下一代游戏机索尼仍将向全球正式展示PlayStation5下一代游戏机。同时,为PS5制作了许多概念渲染,最近又出现了两个渲染图,为游戏机的外观提供了新的视角。人们越来越相信冠状病毒大流行可能
华为全场景智慧生活发布会华为智慧屏SE在此次的全场景智慧生活发布会中,比起其他产品,这次的华为智慧屏SE更像是华为满足人们向下的需求,无论是定价还是硬件搭配都更加的亲民!首先,它推出了两个版本55寸和65寸,其拥有92
才一个月,华为智慧屏又双叒叕出新品?5月19日,华为在北京召开了全场景生活新品发布会,此次又有最新款的华为智慧屏SE发布,距离4月份的智慧屏春季新品发布会才一个月左右,全新的华为智慧屏又会以什么样的亮点大举入场?华为
组建一套客厅家庭影院前,必须了解这些知识点阜新声艺视听正常来讲,家庭影院分为客厅影院以及独立私人影院。近两年,随着片源质量的提升以及音响设备价格的更加亲民,越来越多的普通消费者也会在客厅安装一套属于自己的家庭影院系统,刚好近期也有很多
无线喇叭的优缺点阜新声艺视听很多年之前,有朋友想要购买一对喇叭来听音乐,经过介绍之后发现,原来一套HiFi系统还要功放播放机和喇叭,这样太复杂了,真的劝退了很多想要玩HiFi的人。想不到这么多年以后,那位朋友
央视春晚幕后设备大揭秘!看这一篇就够了5G4K8KAI首次以8K直播首次采用了AIVR裸眼3D拍摄技术首次采用环型屏幕首次VR视频三维声直播今年牛年春晚开创多个首次不仅节目666设备也是牛牛牛快跟随小编脚步来看看都用了
豆瓣9。4,年度剧王预定阜新声艺视听很少能看见这样的国产剧。开分9。1,放在近几年来,已然属于精品行列。然而过了没几天,一看评分,人傻了。直接飙到豆瓣9。4了。到底是怎样的一部国产剧,能这么厉害?今天,必须得来聊一聊
反馈抑制器在扩声系统的应用及连接方法阜新声艺视听一反馈抑制器在扩声系统的应用在扩声系统中,如果将话筒音量进行较大的提升,音箱发出的声音就会传到话筒引起的啸叫,这种现象就是声反馈。声反馈的存在,不仅破坏了音质,限制了话筒声音的扩展
都是灯光师的错?舞台灯光从来不是一个人的艺术提到舞台灯光你会想到谁?我想大多数人都会想到灯光师。以往大家都认为灯光师的工作就是搬搬抬抬的技术人员,直到更多的幕后人员被看到,大众对灯光师的认识才逐渐改变灯光师更深层的身份其实是
AppleMusic好用吗?苹果在2015推出AppleMusic音乐服务,并在去年有3000万用户加入订阅,现在苹果这个流媒体音乐服务又达到一个新的里程碑了,日前公布在全球115个国家内已经有超过4000万
工业互联网部署又进一步万亿蓝海在前一文速览潜在受益平台名单科创板日报(上海,研究员郑远方)讯,日前,工信部为中国信息通信研究院工业互联网标识解析国家顶级节点发放首张工业互联网标识服务许可证,这是自工业互联网标识管理办法(下称管理办法)发布
诈骗分子无孔不入,到底该怎么防?随着5G物联网人工智能等新技术的快速发展电信网络诈骗也日新月异让人防不胜防。诈骗分子利用网络几乎可以对任何一个在线群体实施犯罪01hr喂,是张女士吗?我是公安局户籍科陈警官,你的账
很多人反映新电表转得比较快?是这样吗?感觉是这样的,费用好像比没换表前翻倍,听到的借口说是现在的表比以前的灵敏,以前的老表在使用的电器功率比较小的时候不会转,而现在的电表哪怕是很小的功率也会运转,细想一下,这个说法也是
极狐阿尔法S华为HI版验证车下线,提供自动驾驶功能,将年前交付华为在汽车领域进行了多次布局,但华为官方却声明表示华为在未来不会制造汽车,而是会帮助那些汽车企业制造出更优秀的车。就目前来说,华为已经为许多传统汽车企业提供了万物互联自动驾驶等功能
华为芯片新专利公开,直指芯片封测8月6日,华为申请的一项名为芯片封装结构电子设备芯片封装方法以及封装设备发明专利被公开。申请公布号CN113228268A申请号CN201880100493。2分类号H01L235
7500元以上手机怎么选?目前这3部手机最值得考虑,你会怎么选?很多人买手机喜欢买贵的,这也是很正常的,因为贵的手机堆料猛,体验也好,使用寿命也长,可以让你更加省心!目前市面上贵的手机也挺多的,所以也不要乱买,竟然都出钱那么多了,那肯定要买到称
小米汽车注册地落地亦庄!经营范围公示记者9月2日获悉,小米汽车注册地已经揭晓,其注册地为北京经济技术开发区。国家企业信用信息公示系统显示,小米汽车有限公司的注册地址是在北京,其登记机关为北京经济技术开发区市场监督管理
五部门加强新能源汽车动力蓄电池利用管理来源人民日报本报北京9月1日电(记者王政)工业和信息化部科技部生态环境部商务部市场监管总局近日联合印发新能源汽车动力蓄电池梯次利用管理办法(以下简称办法)。办法提出,鼓励梯次利用企
滴滴双证合规高分司机的真实写照2018年12月初,我在广州的一家与滴滴合作的线下租赁公司以23万高价的分期融租方试买了一辆丰田雷凌双擎的燃油车,以这种方式加入滴滴跑网约车,其中的成本之高费用之多就不一一祥述了!
纯电汽车专利哪家强?丰田排名第一特斯拉只排第五新能源汽车已经成为汽车行业发展的未来趋势,其中,纯电动汽车更是大家争相追逐研发的一个方向。为了能够在未来的电动汽车市场占据更有利的位置,不少车企都在大力研发电动汽车相关技术,也申请