Примечания к выпуску Django 1.8.2 ¶
20 мая 2015 г.
Django 1.8.2 исправляет проблему безопасности и несколько ошибок в 1.8.1.
Исправлено сбрасывание сеанса в cached_db
бэкэнде ¶
Изменение session.flush()
в cached_db
бэкэнде сеанса в Django 1.8 по ошибке устанавливает для ключа сеанса пустую строку, а не None
. Пустая строка рассматривается как действительный сеансовый ключ, и файл cookie сеанса устанавливается соответствующим образом. Любые пользователи с пустой строкой в cookie сеанса будут использовать одно и то же хранилище сеансов. session.flush()
вызывается
django.contrib.auth.logout()
и, что более серьезно,
django.contrib.auth.login()
когда пользователь переключает учетную запись. Если пользователь вошел в систему и снова входит в систему с другой учетной записью (без выхода из системы), сеанс очищается, чтобы избежать повторного использования. После того, как сеанс очищен (и его ключ сеанса становится ''
), данные учетной записи устанавливаются в сеансе, и сеанс сохраняется. Все пользователи, у которых в cookie сеанса есть пустая строка, теперь будут входить в эту учетную запись.
Исправления ¶
- Исправлена проверка уникальности псевдонима шаблонизатора ( # 24685 ).
- Исправлен сбой при повторном использовании одного и того же
Case
экземпляра в запросе ( # 24752 ). - Исправлено продвижение присоединения к
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_toght или index_toght), содержащий внешний ключ ( # 24757 ).
- Исправлено удаление cookie сеанса при использовании
SESSION_COOKIE_DOMAIN
( # 24799 ). - В PostgreSQL, когда доступ к
postgres
базе данных не предоставляется, Django теперь возвращается к базе данных по умолчанию, когда обычно требуется соединение «без базы данных» ( # 24791 ). - Исправлено отображение
contrib.admin
«SForeignKey
виджета , когда он используется в ряд с другими полями ( # 24784 ).