Django 3.1.1发行说明

2020年9月1日

django3.1.1修复了3.1中的两个安全问题和几个错误。

CVE-2020-24583:Python3.7的中级目录权限不正确+

在python3.7+上, FILE_UPLOAD_DIRECTORY_PERMISSIONS 模式未应用于上载文件过程中创建的中级目录,以及使用时收集到的中级静态目录 collectstatic 管理命令。

您应该检查并手动修复对现有中级目录的权限。

CVE-2020-24584:Python3.7文件系统缓存中间级目录的权限提升+

在python3.7+上,文件系统缓存的中间级目录具有系统的标准umask,而不是 0o077 (没有组或其他权限)。

错误修正

  • 修复了东亚语言的管理员导航侧边栏中翻译的操作标签的包装 (#31853

  • 修复了管理员导航侧栏中长型号名称的包装问题 (#31854

  • 修复了将同一项目的多个实例升级到django3.1时对会话数据进行编码的问题 (#31864

  • 调整了管理员的导航边栏模板,以减少渲染时的调试日志记录 (#31865

  • 修复了数据丢失的可能性 select_for_update() . 在中使用指向代理模型的相关字段时 of 参数,相应的模型未锁定 (#31866

  • 修正了在django2.0中进行回归之后,复制带有缓存字段值的模型实例时数据丢失的可能性 (#31863

  • 修正了django3.1中的一个回归,该回归在解码无效会话数据时导致崩溃 (#31895

  • Reverted a deprecation in Django 3.1 that caused a crash when passing deprecated keyword arguments to a queryset in TemplateView.get_context_data() (#31877).

  • 的强制线程敏感度 MiddlewareMixin.process_request()process_response() 在异步上下文中挂接 (#31905

  • 固定的 __in 查找的键转换 JSONField 使用MariaDB、MySQL、Oracle和SQLite (#31936

  • 修正了django3.1中导致权限错误的回归 CommonPasswordValidatorsettings.pystartproject 命令,当用户对Django安装路径中的所有中间目录没有权限时 (#31912

  • 修复了检测异步 get_response 可在各种内置中间件中调用 (#31928

  • Fixed a QuerySet.order_by() crash on PostgreSQL when ordering and grouping by JSONField with a custom decoder (#31956). As a consequence, fetching a JSONField with raw SQL now returns a string instead of preloaded data. You will need to explicitly call json.loads() in such cases.

  • 修正了 QuerySet.delete() 在mariabd10.3.2+上的django3.1中,当过滤聚合函数时,MySQL崩溃 (#31965

  • 修正了 django.contrib.admin.EmptyFieldListFilter 在反向关系中使用时崩溃 (#31952

  • 在启用导航侧栏时,防止了管理更改列表视图中的内容溢出 (#31901