Примечания к выпуску 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 помешал этой отправке формы вызвать ошибку «Permission Denied» для пользователей без разрешения «add».

Обратно несовместимое изменение: .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() ( # 26122 ).
  • Всегда включается geometry_field в вывод сериализатора GeoJSON независимо от fields параметра ( # 26138 ).
  • Исправлены contrib.gis виджеты карты при использовании USE_THOUSAND_SEPARATOR=True ( # 20415 ).
  • Сделаны недопустимые формы отображать начальные значения отключенных полей ( # 26129 ).

Copyright ©2020 All rights reserved