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

Copyright ©2021 All rights reserved