Django4。0正式发布,新的密码哈希器和Redis缓存后
Django4。0正式发布,4。0版本支持Python3。8、3。9和3。10。随着Django4。0的发布,Django3。2的主流支持已经结束。此版本主要有如下亮点:新的RedisCache后端为使用Redis缓存提供了内置支持。现在使用模板引擎呈现Forms、Formsets和ErrorList,以简化自定义的过程。引入新的密码哈希函数scrypt,但因为需要更多内存且依赖OpenSSL1。1,不是默认启用项Python标准库的zoneinfo现在作为Django中的默认时区。新增函数式唯一约束。。。。
重要更新
zoneinfo作为默认时区
Django3。2允许使用非pytz时区。Django4。0是zoneinfo作为默认时区:弃用pytz且将在Django5。0中删除它。zoneinfo是Python3。9标准库的一部分,如果你在使用Python3。8,则会自动安装zoneinfo包。
注意,如果你处于非utc(世界标准时间)时区,且在使用pytznormalize()和localalize()api,那你可能设置了TIMEZONE,需要审查一下代码。4。x系列版本周期有一个过渡性的usedepreccatedpytz设置,允许从pytz慢慢过渡到zoneinfo,这个设置将在Django5。0中删除。
此外,zoneinfo作者创建的pytzdeprecationshim包用于帮助从pytz进行迁移,这个包提供shims来安全地移除pytz,还有一个详细的迁移指南,展示如何移动到新的zoneinfoapi。渐进更新可以用pytzdeprecationshim和usedepreccatedpytz这两个过渡设置。
函数的唯一约束
UniqueConstraint()的新expressions位置参数可以在表达式和数据库函数上创建函数式唯一约束。例如:fromdjango。dbimportmodelsfromdjango。db。modelsimportUniqueConstraintfromdjango。db。models。functionsimportLowerclassMyModel(models。Model):firstnamemodels。CharField(maxlength255)lastnamemodels。CharField(maxlength255)classMeta:indexes〔UniqueConstraint(Lower(firstname),Lower(lastname)。desc(),namefirstlastnameunique,),〕
使用该Meta。constraints选项将函数唯一约束添加到模型中。
增加scrypt密码哈希器
新的scrypt密码哈希器比PBKDF2更安全,建议使用。但它不是默认选项,因为它需要OpenSSL1。1以上版本和更多的内存。
Redis缓存后端
新的django。core。cache。backends。redis。RedisCache缓存后端为使用Redis缓存提供了内置支持。此功能需要redispy3。0。0或更高版本。
基于模板的表单渲染
使用模板引擎渲染表单,如用于表单的render(),getcontext()和templatename,用于表单集的五个渲染相关的属性和方法。
次要更新项:
django。contrib。adminadminbase。html模板现在有一个header,包含管理站点标题的新模块。ModelAdmin。getformsetkwargs()方法允许自定义传递给表单集构造函数的关键字参数。侧边栏的导航有一个快速过滤器工具栏。新的上下文变量模型(包含每个模型的模型类)被添加到AdminSite。eachcontext()方法中。新ModelAdmin。searchhelptext属性允许为搜索框指定描述性文本jQuery从3。5。1版本升级到3。6。0。
django。contrib。authPBKDF2密码散列器的默认迭代计数从260,000增加到320,000。新的LoginView。nextpage属性和getdefaultredirecturl()方法允许在登录后自定义重定向。
django。contrib。gis添加了对SpatiaLite5的支持。GDALRaster现在允许在任何GDAL虚拟文件系统中创建栅格。
django。contrib。postgresPostgreSQL后端现在支持通过服务名称进行连接。详情请参见PostgreSQL连接配置。新AddConstraintNotValid操作允许在PostgreSQL上创建检查约束,而无需验证所有现有行是否满足新约束。新ValidateConstraint操作允许验证AddConstraintNotValid在PostgreSQL上创建的检查约束。新ArraySubquery()表达式允许使用子查询在PostgreSQL上构建值列表。新的trigramwordsimilar查找和TrigramWordDistance()和TrigramWordSimilarity()表达式允许使用三元组词汇相似性(trigramwordsimilarity)。
django。contrib。staticfilesManifestStaticFilesStorage现在将JavaScript源映射引用的路径换成它们自己的散列对应路径。ManifestFilesMixin和ManifestStaticFilesStorage的新参数manifeststorage允许自定义清单文件的存储。
缓存
新的异步API:django。core。cache。backends。base。BaseCache开始使缓存后端异步兼容。新的异步方法都有a前缀的名称,例如aadd(),aget(),aset(),agetorset(),或adeletemany()。
以后a前缀一般会用于方法的异步变体。
CSRFCSRF保护现在参考Origin标头(如果存在)。为此需要对CSRFTRUSTEDORIGINS设置进行一些更改。
国际化添加了对马来语的支持和翻译。
通用视图
DeleteView现在使用FormMixin,允许您提供一个Form子类,例如带有确认删除之类的复选框。
日志SQL调用中使用的数据库别名现在作为额外的上下文,与每条消息一起传递给django。db。backends记录器。
管理命令runserver管理命令现在支持skipchecks选项。在PostgreSQL上,dbshell现在支持指定密码文件。新的BaseCommand。suppressedbasearguments属性允许在输出中阻止不支持的命令选项。新的startappexclude和startprojectexclude选项允许从模板中排除目录
模块新QuerySet。contains(obj)方法返回查询集是否包含给定的对象,会尝试以最简单和最快的方式执行查询。数据库函数Round()有新的precision参数,允许指定舍入的小数位数。QuerySet。bulkcreate()现在在使用SQLite3。35时设置对象的主键。DurationField现在支持在SQLite上乘以和除以标量值。QuerySet。bulkupdate()现在返回更新后的对象数。新的Expression。emptyresultsetvalue属性允许指定函数在空集上使用时返回什么值。QuerySet。selectforupdate()的skiplocked参数,现在允许在MariaDB10。6以上版本使用。Lookup现在可以在QuerySet注释、聚合中使用表达式,且可以直接在过滤器中使用。
请求和响应SecurityMiddleware现在增加了跨来源打开器策略(CrossOriginOpenerPolicy)标头的值:sameorigin,以防止交叉来源的弹出窗口请求共享同一浏览器的上下文,使用COOP隔离窗口是一种针对跨域攻击的深度防御保护,尤其是像Spectre这样的攻击(允许外泄加载到共享浏览上下文中的数据)。
信号用于premigrate()和postmigrate()信号的新stdout参数,允许将输出重定向到一个类似流的对象。为了在测试时正确捕获,它应该优先于并且在发出详细输出时。premigrate()postmigrate()sys。stdoutprint()
模板floatformat模板过滤器现在允许使用u后缀强制禁用本地化。
测试django。test。utils。setupdatabases()的新参数serializedaliases可以决定哪些DATABASES别名测试数据库应该将自身状态序列化,以允许使用serializedrollback功能。Django测试运行器现在支持buffer并行测试选项。DiscoverRunner的新logger参数允许使用Python记录器进行日志记录。Django测试运行器现在支持shuffle以随机顺序执行测试的选项。testparallel选项现在支持auto值:为每个处理器核心运行一个测试进程。TestCase。captureOnCommitCallbacks()现在捕获执行transaction。oncommit()回调时添加的新回调。
Django4。0是一个超大版本更新,除了上述更新以外还包含一些功能的弃用,以及不向后兼容的更新项,完整版更新内容可在更新公告中查看。
开年第一弹,来点知识流媒体究竟是什么?在2019年期间,飞利浦先后推出了两款流媒体技术基础的行车记录仪,一款是CVR1500,一款则是在年尾上线的CVR1550,值得一提的是,CVR1550即便在整体的功能技术上和……
曼德尔于2022年接管EOSIO自从两年前EOSIO2。0发布以来,EOS网络还没有进行过重大的升级。自那时以来,Block。one已经生产了EOSIO2。1和EOSIO2。2的发布候选版本;但是,由于各种原……
你知道滴滴服务分怎么样才涨得快吗?服务分是根据乘客的星级评价和司机个人的接单率,取消单率等等的一个综合评价分数。现在滴滴司机也会给乘客打星级,对于一些比较刁难司机的乘客也会给一星,乘客星级越低,对于司机来说越不……
大疆发布旗下最轻无人机仅87g支持室内避障日前,DJIEducation平台带来了一款全新无人机RoboMasterTellTalent(简称TT),价格为239美元(约合人民币1536元)。其三围尺寸为9892……
你人生中第一部手机用了几年?我人生第一部手机是康佳的一款翻盖手机,即将要升入高中的暑假妈妈为了联系我方便买的一部二手手机。当时收到第一部手机非常高兴,然而随之而来的问题也不少大家好,我是邕宁小妹,很……
决策参考上交所正式确定科创板上市标准我国网民规模达8。29亿1、上交所正式确定科创板上市标准事件:上交所3月1日发布的设立科创板并试点注册制相关配套规则明确了发行人申请在科创板上市的条件:符合中国证监会规定的发行条件;发行后股本总……
币安暂停通过银行转账进行的欧元存款据报道,全球最大的加密货币交易所Binance今天宣布,它已经暂停了通过单一欧元支付区(SEPA)银行转账的欧元存款。SEPA是一个网络,旨在通过创建一个以欧元计价的单一……
俄罗斯能源部正寻求对加密货币矿工实施特殊电价俄罗斯能源部正寻求对加密货币矿工实施特殊电价10月14日消息,随着加密货币挖矿行业从中国迁移到俄罗斯,俄罗斯能源部正寻求对加密货币矿工实施特殊电价。据当地媒体RBC……
莫言其实有点像郑渊洁,还像韩寒正所谓花一些时间,总会看清一些事。用一些事情,总会看清一些人!这句话因为用得太多了,已经成了鸡汤。但这本来真的是句好话。鲁迅说过:世界上本没有鸡汤,用的人多了,也就成了鸡……
520521光速脱单指南一年一度的520又双叒叕到了你的哥们刚有了对象你的表姐妹刚生了孩子你的大学同学刚在五一结了婚而你,刚痛失了石原里美、新垣结衣两位老婆假如爱情……
微众银行企业合作伙伴大会发布新品牌及3年计划2020年10月20日,由微众银行主办的微众企业合作伙伴大会隆重召开。此次大会采用线上直播的方式,在人民日报新媒体、凤凰网财经、腾讯看点等多家媒体同步直播。作为主办方,微众银行……
前三季度车型投诉指数排行多款热门车投诉飙升最近,汽车门网前三个季度的汽车投诉数据已经统计出来。让我们结合着去年前三个季度的数据来分析一下,看看如今前十名上榜的车型都存在着哪些问题。第一名:途观L投诉指数:1349……