• 3.1
  • 5.0
  • 6.1
  • Версия документации: 3.2

Примечания к выпуску Django 1.9.2

1 февраля 2016 г.

Django 1.9.2 исправляет ухудшение безопасности в версии 1.9 и несколько ошибок в версии 1.9.1. Он также вносит небольшое обратно несовместимое изменение, которое, будем надеяться, не повлияет на пользователей.

Проблема безопасности: пользователь с разрешением «изменить», но не «добавлять», может создавать объекты для ModelAdmin с помощью save_as=True.

Если ModelAdmin использует save_as=True (не по умолчанию), администратор предоставляет возможность при редактировании объектов «Сохранить как новый». Регрессия в Django 1.9 не позволяла отправке формы вызывать ошибку «Отказано в доступе» для пользователей без разрешения «добавление».

Изменение обратной несовместимости: файлы .py-tpl переписаны в шаблонах проектов/приложений.

Добавление некоторого синтаксиса языка шаблонов Django к шаблону приложения по умолчанию в Django 1.9 означает, что эти файлы теперь содержат недопустимый синтаксис Python. Это вызывает трудности для систем упаковки, которые безоговорочно компилируют файлы *.py побайтово.

Чтобы исправить это, суффикс .py-tpl теперь используется для файлов шаблонов проектов и приложений, включенных в Django. Суффикс .py-tpl заменяется на .py командами startproject и startapp. Например, шаблон с именем файла «manage.py-tpl» будет создан как «manage.py».

Если у вас есть собственный шаблон проекта, содержащий файлы .py-tpl, и вы считаете такое поведение проблематичным, подайте заявку.

Исправления

  • Исправлена ​​регрессия в ConditionalGetMiddleware, из-за которой проверки If-None-Match всегда возвращали HTTP 200 (#26024).

  • Исправлена ​​регрессия, из-за которой элементы «инструменты пользователя» отображались на странице выхода администратора (#26035).

  • Исправлен сбой в системе переводов, когда на текущем языке нет переводов (#26046).

  • Исправлена ​​регрессия, из-за которой выбирался неправильный день при открытии виджета календаря администратора для часовых поясов от GMT+0100 до GMT+1200 (#24980).

  • Исправлена ​​регрессия во всплывающем окне администратора, связанном с редактированием модели, из-за которой экранированное значение отображалось в раскрывающемся списке выбора родительского окна (#25997).

  • Исправлена регрессия в версии 1.8.8, приводившая к неправильной обработке индексов при миграции в PostgreSQL при добавлении db_index=True или``unique=True`` к CharField или TextField, для которого уже был указан другой, или при удалении одного из них из поля, в котором были оба, или при добавлении unique=True к полю, уже указанному в unique_together (:билет:`26034`).

  • Исправлена ​​регрессия, из-за которой определение отношения в поле абстрактной модели с использованием имени строковой модели без app_label больше не разрешало эту ссылку на приложение абстрактной модели при использовании этой модели в другом приложении (#25858).

  • Исправлен сбой при уничтожении существующей тестовой базы данных MySQL или PostgreSQL (#26096).

  • Исправлена ​​проверка файлов cookie CSRF для запросов POST, когда USE_X_FORWARDED_PORT=True (#26094).

  • Исправлен сбой QuerySet.order_by() при заказе по реляционному полю модели ManyToManyField through (#26092).

  • Исправлена ​​регрессия, которая вызывала исключение при выполнении запросов к базе данных SQLite с более чем 2000 параметрами, когда DEBUG имеет значение True в дистрибутивах, которые увеличивают ограничение времени компиляции SQLITE_MAX_VARIABLE_NUMBER до более чем 2000, таких как Debian (#26063).

  • Исправлен сбой при использовании обратного OneToOneField в ModelAdmin.readonly_fields (#26060).

  • Исправлен сбой при вызове команды migrate в тестовом примере с атрибутом available_apps, указывающим на приложение с отключенной миграцией с использованием настройки MIGRATION_MODULES (#26135).

  • Восстановлена ​​возможность инструментов тестирования и отладки определять шаблон, из которого произошел узел, даже во время наследования или включения шаблона. До Django 1.9 инструменты отладки могли получить доступ к источнику шаблона из узла через Node.token.source[0]. Это был недокументированный частный API. Источник теперь доступен непосредственно на каждом узле с помощью атрибута Node.origin (#25848).

  • Исправлена ​​регрессия в Django 1.8.5, которая не позволяла копировать SimpleLazyObject с помощью copy.copy() (:ticket:26122).

  • Всегда включает geometry_field в выходные данные сериализатора GeoJSON независимо от параметра fields (#26138).

  • Исправлены виджеты карты contrib.gis при использовании USE_THOUSAND_SEPARATOR=True (#20415).

  • В недействительных формах отображаются начальные значения отключенных полей (#26129).

Back to Top