---
title: "Django 4.2.1 版本发行说明"
version: 4.2
locale: zh-hans
source: https://docs.djangoproject.com/zh-hans/4.2/releases/4.2.1/
canonical: https://djangodocs.dev/zh-hans/4.2/releases/4.2.1/
---
# Django 4.2.1 版本发行说明

*2023 年 5 月 3 日*

Django 4.2.1 修复了一个安全问题，安全级别为 "low"，以及若干在 4.2 版本中的错误。

## CVE-2023-31047 ：通过使用一个表单字段上传多个文件时，存在绕过验证的潜在漏洞。

使用一个表单字段上传多个文件从未得到 [`forms.FileField`](/zh-hans/4.2/ref/forms/fields/#django.forms.FileField) 或 [`forms.ImageField`](/zh-hans/4.2/ref/forms/fields/#django.forms.ImageField) 的支持，因为只有最后上传的文件会被验证。不幸的是，[上传多个文件](/zh-hans/4.2/topics/http/file-uploads/#uploading-multiple-files) 主题提到了相反的情况。

为了避免这个漏洞，现在当在 [`ClearableFileInput`](/zh-hans/4.2/ref/forms/widgets/#django.forms.ClearableFileInput) 和 [`FileInput`](/zh-hans/4.2/ref/forms/widgets/#django.forms.FileInput) 表单小部件上设置了 `multiple` HTML 属性时，它们会引发 `ValueError`。为了防止异常并保持旧的行为，将 `allow_multiple_selected` 设置为 `True`。

有关使用新属性以及通过单个字段处理多个文件的更多详细信息，请参阅 [上传多个文件](/zh-hans/4.2/topics/http/file-uploads/#uploading-multiple-files)。

## 漏洞修复

- 在 Django 4.2 中修复了一个回归问题，该问题导致在使用属性名称来延迟字段时，`QuerySet.defer()` 发生崩溃 ([#34458](https://code.djangoproject.com/ticket/34458))。
- 在 Django 4.2 中修复了一个回归问题，该问题导致在使用带有 `%` 字符的 [`SearchVector`](/zh-hans/4.2/ref/contrib/postgres/search/#django.contrib.postgres.search.SearchVector) 函数时发生崩溃 ([#34459](https://code.djangoproject.com/ticket/34459))。
- 在 Django 4.2 中修复了一个回归问题，该问题导致在使用显式分组的查询进行聚合时，聚合作用于错误的列 ([#34464](https://code.djangoproject.com/ticket/34464))。
- 在 Django 4.2 中修复了一个回归问题，现在可以重新设置 PostgreSQL 上的 [`OPTIONS`](/zh-hans/4.2/ref/settings/#std-setting-OPTIONS) 中的 `"cursor_factory"` 选项 ([#34466](https://code.djangoproject.com/ticket/34466))。
- 在 Django 4.2 中修复了一个回归问题，现在在 PostgreSQL 上强制使用 UTF-8 客户端编码 ([#34470](https://code.djangoproject.com/ticket/34470))。
- 在 Django 4.2 中修复了一个回归问题，`i18n_patterns()` 在使用默认语言的回退语言时不再忽略 `prefix_default_language` 参数 ([#34455](https://code.djangoproject.com/ticket/34455))。
- 在 Django 4.2 中修复了一个回归问题，当从 `i18n_patterns()` 使用 `prefix_default_language` 设置为 `False` 时，默认语言的翻译 URL 不再为不同语言的请求引发 404 错误 ([#34515](https://code.djangoproject.com/ticket/34515))。
- 在 Django 4.2 中修复了一个回归问题，创建 `HttpRequest`、`HttpResponse` 及其子类的拷贝和深拷贝并不总是正确工作的问题 ([#34482](https://code.djangoproject.com/ticket/34482), [#34484](https://code.djangoproject.com/ticket/34484))。
- 在 Django 4.2 中修复了一个回归问题，当时间差小于 1 天且日期时间带有非 UTC 时区时，`timesince` 和 `timeuntil` 模板过滤器返回不正确的结果 ([#34483](https://code.djangoproject.com/ticket/34483))。
- 在 Django 4.2 中修复了一个回归问题，该问题导致使用 `psycopg` 3 时 [`SearchHeadline`](/zh-hans/4.2/ref/contrib/postgres/search/#django.contrib.postgres.search.SearchHeadline) 函数崩溃 ([#34486](https://code.djangoproject.com/ticket/34486))。
- 在 Django 4.2 中修复了一个回归问题，该问题导致管理员界面中的 `ClearableFileInput` 边距不正确 ([#34506](https://code.djangoproject.com/ticket/34506))。
- 在 Django 4.2 中修复了一个回归问题，该问题导致管理员站点应用程序索引视图上不显示面包屑导航 ([#34512](https://code.djangoproject.com/ticket/34512))。
- 在 Django 中进行合并迁移操作时，现在会减少 `AddIndex`、`RemoveIndex`、`RenameIndex` 和 `CreateModel` 操作，这允许从历史迁移中移除已弃用的 `Meta.index_together` 选项，而改为使用 `Meta.indexes` ([#34525](https://code.djangoproject.com/ticket/34525))。
