• 3.1
  • 3.2
  • 5.0
  • Версия документации: 6.1

Примечания к выпуску Django 1.2.4

Добро пожаловать в Джанго 1.2.4!

Это четвертый выпуск с исправлением ошибок в серии Django 1.2, улучшающий стабильность и производительность кодовой базы Django 1.2.

За одним исключением, Django 1.2.4 поддерживает обратную совместимость с Django 1.2.3. Он также содержит ряд исправлений и других улучшений. Django 1.2.4 — рекомендуемое обновление для любой разработки или развертывания, в настоящее время использующего или предназначенного для Django 1.2.

Полную информацию о новых функциях, обратной несовместимости и устаревших функциях ветки 1.2 см. в документе Примечания к выпуску Django 1.2.

Нарушение обратной совместимости

Ограниченные фильтры в интерфейсе администратора

Административный интерфейс Django, django.contrib.admin, поддерживает фильтрацию отображаемых списков объектов по полям соответствующих моделей, в том числе по отношениям на уровне базы данных. Это реализуется путем передачи аргументов поиска в части строки запроса URL-адреса, а параметры класса ModelAdmin позволяют разработчикам указывать определенные поля или отношения, которые будут генерировать автоматические ссылки для фильтрации.

Одной из исторически недокументированных и неофициально поддерживаемых функций была возможность для пользователя, обладающего достаточными знаниями о структуре модели и формате аргументов поиска, изобретать на лету полезные новые фильтры, манипулируя строкой запроса.

Однако было продемонстрировано, что этим можно злоупотреблять, чтобы получить доступ к информации за пределами разрешений пользователя-администратора; например, злоумышленник, имеющий доступ к администратору и достаточные знания структуры и отношений модели, может создать строки запроса, которые — при неоднократном использовании поиска по регулярным выражениям, поддерживаемого API базы данных Django — раскрывают конфиденциальную информацию, такую ​​​​как хэши паролей пользователей.

Чтобы исправить это, django.contrib.admin теперь будет проверять, что аргументы поиска строки запроса либо указывают только поля просматриваемой модели, либо перекрестные связи, которые явно разрешены разработчиком приложения с использованием ранее существовавшего механизма, упомянутого выше. Это обратно несовместимо для любых пользователей, полагающихся на предварительную возможность вставки произвольных поисков.

Одна новая функция

Обычно точечный выпуск не включает в себя новые функции, но в случае с Django 1.2.4 мы сделали исключение из этого правила.

Одна из ошибок, исправленных в Django 1.2.4, связана с рядом обстоятельств, при которых запуск набора тестов в конфигурации с несколькими базами данных может привести к удалению исходной исходной базы данных (т. е. фактической рабочей базы данных), что приведет к катастрофической потере данных. Чтобы исправить эту проблему, было необходимо ввести новый параметр — TEST_DEPENDENCIES - который позволяет вам определять любые зависимости порядка создания в конфигурации вашей базы данных.

Большинству пользователей — даже пользователям с конфигурациями с несколькими базами данных — не нужно беспокоиться об ошибке потери данных или ручной настройке TEST_DEPENDENCIES. Подробности см. в оригинальном отчете о проблеме документации по управлению порядком создания тестовых баз данных.

ГеоДжанго

Параметр TEST_RUNNER на основе функции, ранее использовавшийся для выполнения набора тестов GeoDjango, django.contrib.gis.tests.run_gis_tests, был окончательно объявлен устаревшим в пользу средства запуска тестов на основе классов, django.contrib.gis.tests.GeoDjangoTestSuiteRunner, добавленного в этом выпуске.

Кроме того, набор тестов GeoDjango теперь включается при запуске набора тестов Django с runtests.py и использовании бэкендов пространственной базы данных.

Back to Top