Django 3.1.1 发行说明 — Django 文档

来自菜鸟教程
Django/docs/3.1.x/releases/3.1.1
跳转至:导航、​搜索

Django 3.1.1 发行说明

2020 年 9 月 1 日

Django 3.1.1 修复了 3.1 中的两个安全问题和几个错误。

CVE-2020-24583:Python 3.7+ 中级目录的权限不正确

在 Python 3.7+ 上,:setting:`FILE_UPLOAD_DIRECTORY_PERMISSIONS` 模式不适用于上传文件过程中创建的中级目录和使用 :djadmin 时收集的中级静态目录: `collectstatic` 管理命令。

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


CVE-2020-24584:Python 3.7+ 上文件系统缓存的中间级目录中的权限升级

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


错误修正

  • 修复了东亚语言 (:ticket:`31853`) 在管理员导航侧边栏中翻译的动作标签的换行问题。
  • 修复了管理员导航侧栏中长模型名称的换行 (:ticket:`31854`)。
  • 在将同一项目的多个实例升级到 Django 3.1 时修复了编码会话数据 (:ticket:`31864`)。
  • 调整了管理员的导航侧边栏模板以减少渲染时的调试日志记录 (:ticket:`31865`)。
  • 修复了 select_for_update() 中数据丢失的可能性。 在 of 参数中使用指向代理模型的相关字段时,对应的模型没有被锁定 (:ticket:`31866`)。
  • 在复制具有缓存字段值 (:ticket:`31863`) 的模型实例时,在 Django 2.0 中的回归之后修复了数据丢失的可能性。
  • 修复了 Django 3.1 中在解码无效会话数据时导致崩溃的回归 (:ticket:`31895`)。
  • 恢复了 Django 3.1 中的弃用,该弃用在将弃用的关键字参数传递给 TemplateView.get_context_data() (:ticket:`31877`) 中的查询集时会导致崩溃。
  • 在异步上下文中强制执行 MiddlewareMixin.process_request()process_response() 钩子的线程敏感性(:ticket:`31905`)。
  • 修复了 __in 使用 MariaDB、MySQL、Oracle 和 SQLite 对 JSONField 的键转换进行查找(:ticket:`31936`)。
  • 修复了 Django 3.1 中的一个回归,当用户没有所有权限时,导致 :djadmin:`startproject` 命令生成的 CommonPasswordValidatorsettings.py 中的权限错误Django 安装路径中的中间目录 (:ticket:`31912`)。
  • 修复了在各种内置中间件 (:ticket:`31928`) 中检测到可调用的异步 get_response
  • 修复了使用自定义 解码器 (:ticket:`31956`) 按 JSONField 进行排序和分组时,PostgreSQL 上的 QuerySet.order_by() 崩溃。 因此,使用原始 SQL 获取 JSONField 现在返回一个字符串而不是预加载的数据。 在这种情况下,您需要显式调用 json.loads()
  • 修复了 MySQL 上的 QuerySet.delete() 崩溃,在 MariaDB 10.3.2+ 上的 Django 3.1 中的性能回归之后,当过滤聚合函数 (:ticket:`31965`) 时。
  • 修复了在反向关系上使用时的 django.contrib.admin.EmptyFieldListFilter 崩溃 (:ticket:`31952`)。
  • 启用导航侧边栏时防止内容在管理更改列表视图中溢出(:ticket:`31901`)。