Примечания к выпуску 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.