Примечания к выпуску Django 3.1.1¶
1 сентября 2020 г.
В Django 3.1.1 исправлены две проблемы безопасности и несколько ошибок версии 3.1.
CVE-2020-24583: неправильные разрешения для каталогов промежуточного уровня в Python 3.7+.¶
В Python 3.7+ режим FILE_UPLOAD_DIRECTORY_PERMISSIONS не применялся к каталогам промежуточного уровня, созданным в процессе загрузки файлов, и к собранным статическим каталогам промежуточного уровня при использовании команды управления collectstatic.
Вам следует просмотреть и вручную исправить разрешения для существующих каталогов промежуточного уровня.
CVE-2020-24584: Повышение разрешений в каталогах промежуточного уровня кэша файловой системы на Python 3.7+.¶
В Python 3.7+ каталоги промежуточного уровня кэша файловой системы имели стандартную umask системы, а не 0o077 (без групповых или других разрешений).
Исправления¶
Исправлен перенос переведенных меток действий на боковой панели администратора для восточноазиатских языков (#31853).
Исправлен перенос длинных названий моделей на боковой панели администратора (#31854).
Исправлено кодирование данных сеанса при обновлении нескольких экземпляров одного и того же проекта до Django 3.1 (#31864).
Скорректирован шаблон боковой панели навигации администратора, чтобы уменьшить количество журналов отладки при рендеринге (#31865).
Исправлена возможность потери данных в
select_for_update(). При использовании связанных полей, указывающих на прокси-модель в аргументеof, соответствующая модель не блокировалась (#31866).Исправлена возможность потери данных после регрессии в Django 2.0 при копировании экземпляров модели со значением кэшированных полей (#31863).
Исправлена регрессия в Django 3.1, приводившая к сбою при декодировании недопустимых данных сеанса (#31895).
Отменено прекращение поддержки в Django 3.1, которое приводило к сбою при передаче устаревших аргументов ключевого слова в набор запросов в
TemplateView.get_context_data()(#31877).Принудительная чувствительность потоков для перехватчиков
MiddlewareMixin.process_request()иprocess_response()в асинхронном контексте (#31905).Исправлен поиск
__inпо ключевым преобразованиям дляJSONFieldс MariaDB, MySQL, Oracle и SQLite (#31936).Исправлена регрессия в Django 3.1, которая вызывала ошибки разрешений в
CommonPasswordValidatorиsettings.py, созданные командойstartproject, когда у пользователя не было разрешений для всех промежуточных каталогов в пути установки Django (#31912).Исправлено обнаружение асинхронного вызова get_response в различных встроенных промежуточных программах (#31928).
Исправлен сбой
QuerySet.order_by()в PostgreSQL при упорядочивании и группировке поJSONFieldс пользовательскимdecoder(#31956). Как следствие, получение JSONField с помощью необработанного SQL теперь возвращает строку вместо предварительно загруженных данных. В таких случаях вам нужно будет явно вызвать json.loads().Исправлен сбой
QuerySet.delete()в MySQL после снижения производительности в Django 3.1 на MariaDB 10.3.2+ при фильтрации по агрегатной функции (#31965).Исправлен сбой django.contrib.admin.EmptyFieldListFilter при использовании обратных отношений (#31952).
Предотвращено переполнение контента в представлении списка изменений администратора, когда включена боковая панель навигации (#31901).