Django 3.1.1 发行说明 — Django 文档
来自菜鸟教程
Django/docs/3.2.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` 命令生成的
CommonPasswordValidator
和settings.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`)。