Примечания к выпуску 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()
так, чтоForeignKey
s, указывающие наUUIDField
и наследование на моделях сUUIDField
первичными ключами работают правильно (#24698, #24712). - Исправлен поиск
isnull
дляHStoreField
(#24751). - Исправлена ошибка MySQL, когда при миграции удаляется комбинированный индекс (unique_together или index_together), содержащий внешний ключ (#24757).
- Исправлено удаление куки сессии при использовании
SESSION_COOKIE_DOMAIN
(#24799). - На PostgreSQL при отсутствии доступа к базе данных
postgres
Django теперь возвращается к базе данных по умолчанию, когда обычно требуется соединение «без базы данных» (#24791). - Исправлено отображение виджета
contrib.admin
ForeignKey
, когда он используется в ряду с другими полями (#24784).