Примечания к выпуску Django 1.8.2¶
Май 20, 2015
Django 1.8.2 исправляет проблему безопасности и несколько ошибок в 1.8.1.
Исправлена очистка сессии в бэкенде cached_db¶
Изменение на session.flush() в бэкенде сессий cached_db в Django 1.8 ошибочно устанавливает ключ сессии в пустую строку, а не None. Пустая строка рассматривается как правильный ключ сессии, и сессионный файл cookie устанавливается соответствующим образом. Все пользователи с пустой строкой в куки сеанса будут использовать одно и то же хранилище сеанса. session.flush() вызывается django.contrib.auth.logout() и, что более серьезно, django.contrib.auth.login(), когда пользователь переключает учетную запись. Если пользователь вошел в систему и снова вошел в систему под другой учетной записью (не выходя из системы), сессия стирается, чтобы избежать повторного использования. После того, как сессия смывается (и ее сессионный ключ становится ''), данные учетной записи устанавливаются на сессии, и сессия сохраняется. Все пользователи с пустой строкой в куки сессии теперь будут входить в эту учетную запись.
Исправления¶
- Исправлена проверка уникальности псевдонимов шаблонизатора (#24685).
- Исправлена ошибка при повторном использовании одного и того же экземпляра
Caseв запросе (#24752). - Исправлено продвижение join для выражений
Case. Например, аннотирование запроса выражениемCaseмогло неожиданно отфильтровать результаты (#24766). - Исправлены отрицаемые объекты
Qв выражениях. Случаи типаCase(When(~Q(friends__age__lte=30)))пытались сгенерировать подзапрос, что приводило к сбою (#24705). - Исправлено неправильное формирование предложения GROUP BY в MySQL, когда модель запроса имеет самореферентный внешний ключ (#24748).
- Реализовано
ForeignKey.get_db_prep_value()так, чтоForeignKeys, указывающие наUUIDFieldи наследование на моделях сUUIDFieldпервичными ключами работают правильно (#24698, #24712). - Исправлен поиск
isnullдляHStoreField(#24751). - Исправлена ошибка MySQL, когда при миграции удаляется комбинированный индекс (unique_together или index_together), содержащий внешний ключ (#24757).
- Исправлено удаление куки сессии при использовании
SESSION_COOKIE_DOMAIN(#24799). - На PostgreSQL при отсутствии доступа к базе данных
postgresDjango теперь возвращается к базе данных по умолчанию, когда обычно требуется соединение «без базы данных» (#24791). - Исправлено отображение виджета
contrib.adminForeignKey, когда он используется в ряду с другими полями (#24784).