Примечания к выпуску 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).
  • Fixed a bug in Django 3.2 where an admin changelist would crash when deleting objects filtered against multi-valued relationships (#32682). The admin changelist now uses Exists() instead of QuerySet.distinct() because calling delete() after distinct() is not allowed in Django 3.2 to address a data loss possibility.
  • Исправлена регрессия в Django 3.2, когда окружение вызывающего процесса не передавалось команде dbshell на PostgreSQL (#32687).
  • Исправлена регрессия производительности в Django 3.2 при построении сложных фильтров с подзапросами (#32632). В качестве побочного эффекта удален частный API для проверки равенства django.db.sql.query.Query.
Вернуться на верх