# Django 3.2.11.dev 文档

# Django 3.2.1 版本发行说明

2021 年 5 月 4 日

Django 3.2.1 修复了 3.2 中的一个安全问题和几个漏洞。

## CVE-2021-31542：通过上传的文件进行潜在的目录遍历

`MultiPartParser`、`UploadedFile` 和 `FieldFile` 允许通过上传的文件和适当制作的文件名进行目录遍历。

为了降低这种风险，现在应用了更严格的基名和路径预防。

## 漏洞修复

- 纠正了在 Windows 上对 GDAL 3.2 的检测（#32544）。
- 修正了 Django 3.2 中的一个漏洞，`DEFAULT_AUTO_FIELD` 配置无法使用 `BigAutoField` 和 `SmallAutoField` 的子类（#32620）。
- 修正了 Django 3.2 中的一个缺陷，当在 `QuerySet.union()`、`intersection()` 和 `difference()` 之后使用一个无注解字段进行排序的 `QuerySet.values()/values_list()` 会发生崩溃（#32627）。
- 恢复了，在 Django 3.2 中的缺陷，在技术 404 调试页面显示异常消息（#32637）。
- 修正了 Django 3.2 中的一个漏洞，即在 `CheckConstraint.check` 或 `UniqueConstraint.condition` 中反向查询一对一关系时，系统检查会崩溃（#32635）。
- 修正了 Django 3.2 中的一个缺陷，当搜索时带不平衡引号的短语时，会导致 `ModelAdmin.search_fields` 崩溃（#32649）。
- 修正了 Django 3.2 中的一个漏洞，即如果没有定义候补变量，变量查找错误会被记录在站点地图模板上（#32648）。
- 修正了 Django 3.2 中的一个缺陷，当组合包含布尔表达式（#32548）的 `Q()` 对象时导致崩溃的问题。
- 修正了 Django 3.2 中的一个缺陷，该缺陷导致 `QuerySet.update()` 在 MySQL 和 MariaDB 按继承或连接字段排序的查询集上崩溃（#32645）。
- 修正了 Django 3.2 中的一个缺陷，当解码由 `django.contrib.messages.storage.CookieStorage` 使用的 Django 3.2 之前格式的 cookie 值时，导致崩溃（#32643）。
- 修正了 Django 3.2 中的一个缺陷，该缺陷使 shift 键修改器无法在管理更新列表中选择多行（#32647）。
- 修正了 Django 3.2 中的一个bug，即系统检查会在 `STATICFILES_DIRS` 配置中出现 `(prefix, path)` 的二元元组列表时崩溃（#32665）。
- 修正了一个长期存在的漏洞，涉及到与子查询一起使用时的查询集按位组合，该漏洞在 Django 3.2 中开始出现，是由于一个使用 `Exists` 来 `exclude()` 多值关系的单独修正（#32650）。
- 修正了 Django 3.2 中的一个漏洞，即在渲染某些管理模板时记录了变量查询错误（#32681）。
- 修正了 Django 3.2 中的一个漏洞，即当删除针对多值关系过滤的对象时，管理变更列表会崩溃（#32682）。管理变更列表现在使用 `Exists()`，而不是 `QuerySet.distinct()`，因为 Django 3.2 不允许在 `distinct()` 之后调用 `delete()`，以解决数据丢失的可能性。
- 修正了 Django 3.2 中的一个缺陷，即在 PostgreSQL 上调用进程环境不会被传递给 `dbshell` 命令（#32687）。
- 修正了 Django 3.2 中使用子查询构建复杂过滤器时的性能缺陷（#32632）。作为一个副作用，删除了检查 `django.db.sql.query.Query` 相等的私有 API。