Примечания к выпуску Django 3.2.1¶
4 мая 2021
Django 3.2.1 исправляет проблему безопасности и несколько ошибок в 3.2.
CVE-2021-31542: Потенциальный обход каталога через загруженные файлы¶
MultiPartParser
, UploadedFile
и FieldFile
допускали обход каталога через загруженные файлы с соответствующим образом составленными именами файлов.
Для снижения этого риска в настоящее время применяется более строгая санация базовых имен и путей.
Исправления¶
- Исправлено обнаружение GDAL 3.2 под Windows (#32544).
- Исправлена ошибка в Django 3.2, когда подклассы
BigAutoField
иSmallAutoField
не допускались для настройкиDEFAULT_AUTO_FIELD
(#32620). - Исправлена регрессия в Django 3.2, которая приводила к сбою
QuerySet.values()/values_list()
послеQuerySet.union()
,intersection()
иdifference()
, когда он был упорядочен по неаннотированному полю (#32627). - Восстановлено, после регрессии в Django 3.2, отображение сообщения об исключении на странице отладки технического 404 (#32637).
- Исправлена ошибка в Django 3.2, при которой системная проверка давала сбой при обратных отношениях один-к-одному в
CheckConstraint.check
илиUniqueConstraint.condition
(#32635). - Исправлена регрессия в Django 3.2, которая приводила к сбою
ModelAdmin.search_fields
при поиске по фразам с несбалансированными кавычками (#32649). - Исправлена ошибка в Django 3.2, когда ошибки поиска переменных регистрировались при выводе шаблона sitemap, если альтернативы не были определены (#32648).
- Исправлена регрессия в Django 3.2, которая приводила к сбою при объединении объектов
Q()
, содержащих булевы выражения (#32548). - Исправлена регрессия в Django 3.2, которая приводила к сбою
QuerySet.update()
на кверисете, упорядоченном по унаследованным или объединенным полям на MySQL и MariaDB (#32645). - Исправлена регрессия в Django 3.2, которая приводила к сбою при декодировании значения cookie, используемого
django.contrib.messages.storage.cookie.CookieStorage
, в формате, существовавшем до версии Django 3.2 (#32643). - Исправлена регрессия в Django 3.2, из-за которой модификатор shift-key не позволял выделить несколько строк в списке изменений администратора (#32647).
- Исправлена ошибка в Django 3.2, при которой системная проверка давала сбой при установке
STATICFILES_DIRS
со списком из двух кортежей(prefix, path)
(#32665). - Исправлена давняя ошибка, связанная с побитовой комбинацией queryset при использовании с подзапросами, которая начала проявляться в Django 3.2, из-за отдельного исправления при использовании многозначных отношений
Exists
кexclude()
(#32650). - Исправлена ошибка в Django 3.2, когда при рендеринге некоторых шаблонов администратора регистрировались ошибки поиска переменных (#32681).
- Исправлена ошибка в Django 3.2, при которой список изменений администратора аварийно завершался при удалении объектов, отфильтрованных по многозначным отношениям (#32682). В списке изменений администратора теперь используется
Exists()
вместоQuerySet.distinct()
, поскольку вызовdelete()
послеdistinct()
в Django 3.2 запрещен, чтобы устранить возможность потери данных. - Исправлена регрессия в Django 3.2, когда окружение вызывающего процесса не передавалось команде
dbshell
на PostgreSQL (#32687). - Исправлена регрессия производительности в Django 3.2 при построении сложных фильтров с подзапросами (#32632). В качестве побочного эффекта удален частный API для проверки равенства
django.db.sql.query.Query
.