Временная шкала устаревания Django

Этот документ описывает, когда различные части Django будут удалены или изменены несовместимым с предыдущими версиями способом, после их обесценивания, согласно deprecation policy. Более подробную информацию о каждом элементе часто можно найти в примечаниях к релизам двух предыдущих версий.

5.1

Подробнее об этих изменениях см. в Django 4.2 release notes.

  • Метод BaseUserManager.make_random_password() будет удален.
  • Опция Meta.index_together в модели будет удалена.
  • Шаблонный фильтр length_is будет удален.
  • Будут удалены django.contrib.auth.hashers.SHA1PasswordHasher, django.contrib.auth.hashers.UnsaltedSHA1PasswordHasher и django.contrib.auth.hashers.UnsaltedMD5PasswordHasher.
  • Модель django.contrib.postgres.fields.CICharField, django.contrib.postgres.fields.CIEmailField и django.contrib.postgres.fields.CITextField будет удалена. Поля-заглушки останутся для совместимости с историческими миграциями.
  • Миксин django.contrib.postgres.fields.CIText будет удален.
  • Атрибуты map_width и map_height у BaseGeometryWidget будут удалены.
  • Метод SimpleTestCase.assertFormsetError() будет удален.
  • Метод TransactionTestCase.assertQuerysetEqual() будет удален.
  • Поддержка передачи закодированных строковых литералов JSON в JSONField и связанных с ними поисков и выражений будет удалена.
  • Поддержка передачи позиционных аргументов в Signer и TimestampSigner будет удалена.
  • Настройки DEFAULT_FILE_STORAGE и STATICFILES_STORAGE будут удалены.
  • Функция django.core.files.storage.get_storage_class() будет удалена.

5.0

Подробнее об этих изменениях см. в Django 4.0 release notes.

  • Тестовая настройка SERIALIZE будет удалена.
  • Недокументированный модуль django.utils.baseconv будет удален.
  • Недокументированный модуль django.utils.datetime_safe будет удален.
  • Значение по умолчанию настройки USE_TZ изменится с False на True.
  • Протокол по умолчанию для карт сайта, построенных вне контекста запроса, изменится с 'http' на 'https'.
  • Аргумент extra_tests для DiscoverRunner.build_suite() и DiscoverRunner.run_tests() будет удален.
  • Совокупности django.contrib.postgres.aggregates.ArrayAgg, JSONBAgg и StringAgg будут возвращать None при отсутствии строк вместо [], [] и '' соответственно.
  • Настройка USE_L10N будет удалена.
  • Переходная настройка USE_DEPRECATED_PYTZ будет удалена.
  • Поддержка временных зон pytz будет удалена.
  • Аргумент is_dst будет удален из:
    • QuerySet.datetimes()
    • django.utils.timezone.make_aware()
    • django.db.models.functions.Trunc()
    • django.db.models.functions.TruncSecond()
    • django.db.models.functions.TruncMinute()
    • django.db.models.functions.TruncHour()
    • django.db.models.functions.TruncDay()
    • django.db.models.functions.TruncWeek()
    • django.db.models.functions.TruncMonth()
    • django.db.models.functions.TruncQuarter()
    • django.db.models.functions.TruncYear()
  • Классы django.contrib.gis.admin.GeoModelAdmin и OSMGeoAdmin будут удалены.
  • Недокументированный метод BaseForm._html_output() будет удален.
  • Возможность возвращать str, а не SafeString, при рендеринге ErrorDict и ErrorList будет удалена.

Более подробную информацию об этих изменениях см. в Django 4.1 release notes.

  • Метод SitemapIndexItem.__str__() будет удален.
  • Переходная настройка CSRF_COOKIE_MASKED будет удалена.
  • Аргумент name из django.utils.functional.cached_property() будет удален.
  • Аргумент opclasses из django.contrib.postgres.constraints.ExclusionConstraint будет удален.
  • Недокументированная возможность передачи errors=None в SimpleTestCase.assertFormError() и assertFormsetError() будет удалена.
  • django.contrib.sessions.serializers.PickleSerializer будут удалены.
  • Использование QuerySet.iterator() в кверисете, который осуществляет предварительную выборку связанных объектов без указания аргумента chunk_size, больше не будет разрешено.
  • Передача несохраненных экземпляров модели в связанные фильтры больше не будет разрешена.
  • created=True будет требоваться в подписи подклассов RemoteUserBackend.configure_user().
  • Поддержка выхода из системы через запросы GET в django.contrib.auth.views.LogoutView и django.contrib.auth.views.logout_then_login() будет удалена.
  • Псевдоним django.utils.timezone.utc для datetime.timezone.utc будет удален.
  • Передача объекта ответа и имени формы/формсета в SimpleTestCase.assertFormError() и assertFormsetError() больше не будет разрешена.
  • Символ django.contrib.gis.admin.OpenLayersWidget будет удален.
  • Символ django.contrib.auth.hashers.CryptPasswordHasher будет удален.
  • Шаблоны "django/forms/default.html" и "django/forms/formsets/default.html" будут удалены.
  • Возможность передавать nulls_first=False или nulls_last=False в методы Expression.asc() и Expression.desc(), а также выражение OrderBy будет удалена.

4.1

Подробнее об этих изменениях см. в Django 3.2 release notes.

  • Поддержка присвоения объектов, не поддерживающих создание глубоких копий с помощью copy.deepcopy(), атрибутам класса в TestCase.setUpTestData() будет удалена.
  • BaseCommand.requires_system_checks не будет поддерживать булевы значения.
  • Аргумент whitelist и атрибут domain_whitelist в django.core.validators.EmailValidator будут удалены.
  • Переменная модуля default_app_config будет удалена.
  • TransactionTestCase.assertQuerysetEqual() больше не будет автоматически вызывать repr() на кверисете при сравнении со строковыми значениями.
  • django.core.cache.backends.memcached.MemcachedCache будут удалены.
  • Поддержка формата сообщений, существовавшего до версии Django 3.2 и использовавшегося django.contrib.messages.storage.cookie.CookieStorage, будет удалена.

4.0

Подробнее об этих изменениях см. в Django 3.0 release notes.

  • django.utils.http.urlquote(), urlquote_plus(), urlunquote() и urlunquote_plus() будут удалены.
  • django.utils.encoding.force_text() и smart_text() будут удалены.
  • django.utils.translation.ugettext(), ugettext_lazy(), ugettext_noop(), ungettext() и ungettext_lazy() будут удалены.
  • django.views.i18n.set_language() больше не будет устанавливать язык пользователя в request.session (клавиша django.utils.translation.LANGUAGE_SESSION_KEY).
  • alias=None будет требоваться в подписи подклассов django.db.models.Expression.get_group_by_cols().
  • django.utils.text.unescape_entities() будут удалены.
  • django.utils.http.is_safe_url() будут удалены.

Подробнее об этих изменениях см. в Django 3.1 release notes.

  • Настройка PASSWORD_RESET_TIMEOUT_DAYS будет удалена.
  • Недокументированное использование поиска isnull с небулевыми значениями в качестве правой части больше не будет разрешено.
  • Класс исключений django.db.models.query_utils.InvalidQuery будет удален.
  • Точка входа django-admin.py будет удалена.
  • Метод HttpRequest.is_ajax() будет удален.
  • Поддержка формата кодировки значений cookies, существовавшего до версии Django 3.1 и использовавшегося в django.contrib.messages.storage.cookie.CookieStorage, будет удалена.
  • Будет удалена поддержка токенов сброса пароля в админке до версии Django 3.1 (которые используют алгоритм хэширования SHA-1).
  • Поддержка формата кодировки сессий, существовавшего до версии Django 3.1, будет удалена.
  • Поддержка подписей django.core.signing.Signer, существовавших до версии Django 3.1 (закодированных алгоритмом SHA-1), будет удалена.
  • Поддержка подписей django.core.signing.dumps(), существовавших до версии Django 3.1 (закодированных алгоритмом SHA-1) в django.core.signing.loads() будет удалена.
  • Поддержка пользовательских сессий до версии Django 3.1 (которые используют алгоритм SHA-1) будет удалена.
  • Аргумент get_response для django.utils.deprecation.MiddlewareMixin.__init__() будет обязательным и не будет принимать None.
  • Аргумент providing_args для django.dispatch.Signal будет удален.
  • Аргумент length для django.utils.crypto.get_random_string() будет обязательным.
  • Сообщение list для ModelMultipleChoiceField будет удалено.
  • Поддержка передачи необработанных псевдонимов столбцов в QuerySet.order_by() будет удалена.
  • Модель NullBooleanField будет удалена. Поле-заглушка останется для совместимости с историческими миграциями.
  • django.conf.urls.url() будут удалены.
  • Модель django.contrib.postgres.fields.JSONField будет удалена. Поле-заглушка останется для совместимости с историческими миграциями.
  • django.contrib.postgres.forms.JSONField, django.contrib.postgres.fields.jsonb.KeyTransform и django.contrib.postgres.fields.jsonb.KeyTextTransform будут удалены.
  • Теги шаблонов {% ifequal %} и {% ifnotequal %} будут удалены.
  • Переходная настройка DEFAULT_HASHING_ALGORITHM будет удалена.

3.1

Подробнее об этих изменениях см. в Django 2.2 release notes.

  • django.utils.timezone.FixedOffset будет удален.
  • django.core.paginator.QuerySetPaginator будет удален.
  • Модель Meta.ordering больше не будет влиять на запросы GROUP BY.
  • django.contrib.postgres.fields.FloatRangeField и django.contrib.postgres.forms.FloatRangeField будут удалены.
  • Настройка FILE_CHARSET будет удалена.
  • django.contrib.staticfiles.storage.CachedStaticFilesStorage будет удален.
  • RemoteUserBackend.configure_user() потребует request в качестве первого позиционного аргумента.
  • Поддержка SimpleTestCase.allow_database_queries и TransactionTestCase.multi_db будет удалена.

3.0

Подробнее об этих изменениях см. в Django 2.0 release notes.

  • Модуль django.db.backends.postgresql_psycopg2 будет удален.
  • django.shortcuts.render_to_response() будет удален.
  • Настройка DEFAULT_CONTENT_TYPE будет удалена.
  • HttpRequest.xreadlines() будет удален.
  • Поддержка аргумента context в Field.from_db_value() и Expression.convert_value() будет удалена.
  • Аргумент field_name ключевого слова QuerySet.earliest() и latest() будет удален.

Подробнее об этих изменениях см. в Django 2.1 release notes.

  • django.contrib.gis.db.models.functions.ForceRHR будет удален.
  • django.utils.http.cookie_date() будет удален.
  • Библиотеки тегов шаблонов staticfiles и admin_static будут удалены.
  • django.contrib.staticfiles.templatetags.static() будет удален.
  • Шим, позволяющий определять InlineModelAdmin.has_add_permission() без аргумента obj, будет удален.

2.1

Подробнее об этих изменениях см. в Django 1.11 release notes.

  • contrib.auth.views.login(), logout(), password_change(), password_change_done(), password_reset(), password_reset_done(), password_reset_confirm() и password_reset_complete() будут удалены.
  • Параметр extra_context из contrib.auth.views.logout_then_login() будет удален.
  • django.test.runner.setup_databases() будет удален.
  • django.utils.translation.string_concat() будет удален.
  • django.core.cache.backends.memcached.PyLibMCCache больше не будет поддерживать передачу параметров поведения pylibmc в качестве атрибутов верхнего уровня OPTIONS.
  • Параметр host из django.utils.http.is_safe_url() будет удален.
  • Будет удалено глушение исключений, возникающих при выводе тега шаблона {% include %}.
  • DatabaseIntrospection.get_indexes() будет удален.
  • Метод аутентификации бэкендов authenticate() потребует request в качестве первого позиционного аргумента.
  • Декоратор django.db.models.permalink() будет удален.
  • Настройка USE_ETAGS будет удалена. CommonMiddleware и django.utils.cache.patch_response_headers() больше не будут устанавливать ETags.
  • Атрибут Model._meta.has_auto_field будет удален.
  • Поддержка url() для встроенных флагов в группах регулярных выражений ((?i), (?L), (?m), (?s) и (?u)) будет удалена.
  • Поддержка методов Widget.render() без аргумента renderer будет удалена.

2.0

Подробнее об этих изменениях см. в Django 1.9 release notes.

  • Аргумент weak для django.dispatch.signals.Signal.disconnect() будет удален.
  • django.db.backends.base.BaseDatabaseOperations.check_aggregate_support() будет удален.
  • Пакет django.forms.extras будет удален.
  • Помощник assignment_tag будет удален.
  • Аргумент host для assertsRedirects будет удален. Также будет удален уровень совместимости, позволяющий считать абсолютные URL равными относительным при идентичности пути.
  • Field.rel будет удален.
  • Field.remote_field.to атрибут будет удален.
  • Аргумент on_delete для ForeignKey и OneToOneField будет обязательным.
  • django.db.models.fields.add_lazy_relation() будет удален.
  • Когда включена поддержка часовых поясов, бэкенды баз данных, не поддерживающие часовые пояса, больше не будут преобразовывать известные времена дат в наивные значения в UTC, когда такие значения передаются в качестве параметров в SQL-запросы, выполняемые вне ORM, например, с помощью cursor.execute().
  • Декоратор django.contrib.auth.tests.utils.skipIfCustomUser() будет удален.
  • Классы GeoManager и GeoQuerySet будут удалены.
  • Модуль django.contrib.gis.geoip будет удален.
  • Проверка supports_recursion для загрузчиков шаблонов будет удалена:
    • django.template.engine.Engine.find_template()
    • django.template.loader_tags.ExtendsNode.find_template()
    • django.template.loaders.base.Loader.supports_recursion()
    • django.template.loaders.cached.Loader.supports_recursion()
  • Методы load_template() и load_template_sources() загрузчика шаблонов будут удалены.
  • Аргумент template_dirs для загрузчиков шаблонов будет удален:
    • django.template.loaders.base.Loader.get_template()
    • django.template.loaders.cached.Loader.cache_key()
    • django.template.loaders.cached.Loader.get_template()
    • django.template.loaders.cached.Loader.get_template_sources()
    • django.template.loaders.filesystem.Loader.get_template_sources()
  • Метод django.template.loaders.base.Loader.__call__() будет удален.
  • Поддержка пользовательских представлений ошибок с одним позиционным параметром будет прекращена.
  • Атрибут mime_type из django.utils.feedgenerator.Atom1Feed и django.utils.feedgenerator.RssFeed будет удален в пользу django.utils.feedgenerator.RssFeed.
  • Аргумент app_name для django.conf.urls.include() будет удален.
  • Поддержка передачи 3-кортежа в качестве первого аргумента в include() будет удалена.
  • Поддержка установки пространства имен экземпляра URL без пространства имен приложения будет удалена.
  • Field._get_val_from_obj() будет удален в пользу Field.value_from_object().
  • django.template.loaders.eggs.Loader будет удален.
  • Параметр current_app для представлений contrib.auth будет удален.
  • Аргумент callable_obj в виде ключевого слова SimpleTestCase.assertRaisesMessage() будет удален.
  • Поддержка атрибута allow_tags для методов ModelAdmin будет удалена.
  • Аргумент enclosure в виде ключевого слова SyndicationFeed.add_item() будет удален.
  • Псевдонимы django.template.loader.LoaderOrigin и django.template.base.StringOrigin для django.template.base.Origin будут удалены.

Подробнее об этих изменениях см. в Django 1.10 release notes.

  • Опция makemigrations --exit будет удалена.
  • Поддержка прямого присвоения обратному внешнему ключу или отношению «многие-ко-многим» будет удалена.
  • Методы get_srid() и set_srid() из django.contrib.gis.geos.GEOSGeometry будут удалены.
  • Методы get_x(), set_x(), get_y(), set_y(), get_z() и set_z() из django.contrib.gis.geos.Point будут удалены.
  • Методы get_coords() и set_coords() из django.contrib.gis.geos.Point будут удалены.
  • Свойство cascaded_union из django.contrib.gis.geos.MultiPolygon будет удалено.
  • django.utils.functional.allow_lazy() будет удален.
  • Опция shell --plain будет удалена.
  • Модуль django.core.urlresolvers будет удален.
  • Модель CommaSeparatedIntegerField будет удалена. Поле-заглушка останется для совместимости с историческими миграциями.
  • Поддержка метода шаблона Context.has_key() будет удалена.
  • Поддержка методов django.core.files.storage.Storage.accessed_time(), created_time() и modified_time() будет удалена.
  • Поддержка поиска запросов по имени модели, когда установлено значение Meta.default_related_name, будет удалена.
  • Поиск запроса __search и метод DatabaseOperations.fulltext_search_sql() будут удалены.
  • Шим для поддержки пользовательских классов связанных менеджеров без метода _apply_rel_filters() будет удален.
  • Использование User.is_authenticated() и User.is_anonymous() в качестве методов больше не будет поддерживаться.
  • Частный атрибут virtual_fields из Model._meta будет удален.
  • Закрытые ключевые аргументы virtual_only в Field.contribute_to_class() и virtual в Model._meta.add_field() будут удалены.
  • Представления javascript_catalog() и json_catalog() будут удалены.
  • Функция django.contrib.gis.utils.precision_wkt() будет удалена.
  • При многотабличном наследовании неявное повышение OneToOneField до parent_link будет удалено.
  • Поддержка Widget._format_value() будет удалена.
  • Методы FileField get_directory_name() и get_filename() будут удалены.
  • Функция mark_for_escaping() и классы, которые она использует: EscapeData, EscapeBytes, EscapeText, EscapeString и EscapeUnicode будут удалены.
  • Фильтр escape изменится на использование django.utils.html.conditional_escape().
  • Manager.use_for_related_fields будет удален.
  • Наследование модели Manager будет следовать правилам наследования MRO, а опция Meta.manager_inheritance_from_future для отказа от такого поведения будет удалена.
  • Поддержка промежуточных программ старого образца, использующих settings.MIDDLEWARE_CLASSES, будет удалена.

1.10

Подробнее об этих изменениях см. в Django 1.8 release notes.

  • Поддержка прямого вызова SQLCompiler в качестве псевдонима для вызова его метода quote_name_unless_alias будет удалена.
  • Теги шаблонов cycle и firstof будут удалены из библиотеки тегов шаблонов future (использовались в период устаревания версий 1.6/1.7).
  • django.conf.urls.patterns() будет удален.
  • Поддержка аргумента prefix для django.conf.urls.i18n.i18n_patterns() будет удалена.
  • SimpleTestCase.urls будет удален.
  • Использование неправильного подсчета распакованных значений в теге шаблона for приведет к возникновению исключения, а не к молчаливому отказу.
  • Возможность разворачивать URL-адреса, используя точечный путь Python, будет удалена.
  • Возможность использовать пунктирный путь Python для параметров LOGIN_URL и LOGIN_REDIRECT_URL будет удалена.
  • Поддержка optparse будет прекращена для пользовательских команд управления (заменена на argparse).
  • Класс django.core.management.NoArgsCommand будет удален. Вместо него используйте BaseCommand, который по умолчанию не принимает аргументов.
  • django.core.context_processors модуль будет удален.
  • django.db.models.sql.aggregates модуль будет удален.
  • django.contrib.gis.db.models.sql.aggregates модуль будет удален.
  • Следующие методы и свойства django.db.sql.query.Query будут удалены:
    • Свойства: aggregates и aggregate_select
    • Методы: add_aggregate, set_aggregate_mask и append_aggregate_mask.
  • django.template.resolve_variable будет удален.
  • Следующие частные API будут удалены из django.db.models.options.Options (Model._meta):
    • get_field_by_name()
    • get_all_field_names()
    • get_fields_with_model()
    • get_concrete_fields_with_model()
    • get_m2m_with_model()
    • get_all_related_objects()
    • get_all_related_objects_with_model()
    • get_all_related_many_to_many_objects()
    • get_all_related_m2m_objects_with_model()
  • Аргумент error_message из django.forms.RegexField будет удален.
  • Фильтр unordered_list больше не будет поддерживать списки старого стиля.
  • Поддержка строковых аргументов view для url() будет удалена.
  • Шим обратной совместимости для переименования django.forms.Form._has_changed() в has_changed() будет удален.
  • Фильтр шаблона removetags будет удален.
  • Функции remove_tags() и strip_entities() в django.utils.html будут удалены.
  • Аргумент is_admin_site для django.contrib.auth.views.password_reset() будет удален.
  • django.db.models.field.subclassing.SubfieldBase будет удален.
  • django.utils.checksums будет удален; его функциональность включена в django-localflavor 1.1+.
  • Атрибут original_content_type_id на django.contrib.admin.helpers.InlineAdminForm будет удален.
  • Шим обратной совместимости, позволяющий определять FormMixin.get_form() без значения по умолчанию для его аргумента form_class, будет удален.
  • Следующие настройки будут удалены:
    • ALLOWED_INCLUDE_ROOTS
    • TEMPLATE_CONTEXT_PROCESSORS
    • TEMPLATE_DEBUG
    • TEMPLATE_DIRS
    • TEMPLATE_LOADERS
    • TEMPLATE_STRING_IF_INVALID
  • Псевдоним обратной совместимости django.template.loader.BaseLoader будет удален.
  • Шаблонные объекты Django, возвращаемые get_template() и select_template(), больше не будут принимать Context в своем методе render().
  • Template response APIs будет принудительно использовать dict и бэкенд-зависимые объекты шаблона вместо Context и Template соответственно.
  • Параметр current_app для следующих функций и классов будет удален:
    • django.shortcuts.render()
    • django.template.Context()
    • django.template.RequestContext()
    • django.template.response.TemplateResponse()
  • Параметры dictionary и context_instance для следующих функций будут удалены:
    • django.shortcuts.render()
    • django.shortcuts.render_to_response()
    • django.template.loader.render_to_string()
  • Параметр dirs для следующих функций будет удален:
    • django.template.loader.get_template()
    • django.template.loader.select_template()
    • django.shortcuts.render()
    • django.shortcuts.render_to_response()
  • Проверка сеанса будет включена независимо от того, находится ли 'django.contrib.auth.middleware.SessionAuthenticationMiddleware' в MIDDLEWARE_CLASSES или нет.
  • Частный атрибут django.db.models.Field.related будет удален.
  • Опция --list команды управления migrate будет удалена.
  • Тег шаблона ssi будет удален.
  • Поддержка оператора сравнения = в теге шаблона if будет удалена.
  • Шимы обратной совместимости, позволяющие определять Storage.get_available_name() и Storage.save() без аргумента max_length, будут удалены.
  • Поддержка устаревшего синтаксиса %(<foo>)s в ModelFormMixin.success_url будет удалена.
  • Агрегатные методы GeoQuerySet collect(), extent(), extent3d(), make_line() и unionagg() будут удалены.
  • Возможность указать ContentType.name при создании экземпляра типа содержимого будет удалена.
  • Поддержка старой сигнатуры allow_migrate будет удалена. Она изменилась с allow_migrate(self, db, model) на allow_migrate(self, db, app_label, model_name=None, **hints).
  • Поддержка синтаксиса {% cycle %}, использующего аргументы, разделенные запятыми, будет удалена.
  • Предупреждение, которое выдает Signer при задании недопустимого разделителя, станет исключением.

1.9

Подробнее об этих изменениях см. в Django 1.7 release notes.

  • django.utils.dictconfig будет удален.
  • django.utils.importlib будет удален.
  • django.utils.tzinfo будет удален.
  • django.utils.unittest будет удален.
  • Команда syncdb будет удалена.
  • django.db.models.signals.pre_syncdb и django.db.models.signals.post_syncdb будут удалены.
  • allow_syncdb на маршрутизаторах базы данных больше не будет автоматически становиться allow_migrate.
  • Автоматическая синхронизация приложений без миграций будет удалена. Миграции станут обязательными для всех приложений, если вы не передадите параметру --run-syncdb значение migrate.
  • Команды управления SQL для приложений без миграций, sql, sqlall, sqlclear, sqldropindexes и sqlindexes, будут удалены.
  • Поддержка автоматической загрузки приспособлений initial_data и начальных данных SQL будет удалена.
  • Все модели необходимо будет определить внутри установленного приложения или объявить явным образом app_label. Более того, их нельзя будет импортировать до загрузки приложения. В частности, нельзя будет импортировать модели внутри корневого пакета своего приложения.
  • Модель и форма IPAddressField будут удалены. Поле-заглушка останется для совместимости с историческими миграциями.
  • AppCommand.handle_app() больше не будет поддерживаться.
  • RequestSite и get_current_site() больше не будут импортироваться из django.contrib.sites.models.
  • Поддержка FastCGI через команду управления runfcgi будет удалена. Пожалуйста, развертывайте ваш проект, используя WSGI.
  • django.utils.datastructures.SortedDict будет удален. Вместо этого используйте collections.OrderedDict из стандартной библиотеки Python.
  • ModelAdmin.declared_fieldsets будет удален.
  • Экземпляры util.py в кодовой базе Django были переименованы в utils.py в попытке унифицировать все ссылки на util и utils. Модули, которые обеспечивали обратную совместимость, будут удалены:
    • django.contrib.admin.util
    • django.contrib.gis.db.backends.util
    • django.db.backends.util
    • django.forms.util
  • ModelAdmin.get_formsets будет удален.
  • Шим обратной совместимости, введенный для переименования метода BaseMemcachedCache._get_memcache_timeout() в get_backend_timeout(), будет удален.
  • Опции --natural и -n для dumpdata будут удалены.
  • Аргумент use_natural_keys для serializers.serialize() будет удален.
  • Частный API django.forms.forms.get_declared_fields() будет удален.
  • Возможность использовать SplitDateTimeWidget с DateTimeField будет удалена.
  • Свойство WSGIRequest.REQUEST будет удалено.
  • Класс django.utils.datastructures.MergeDict будет удален.
  • Коды языков zh-cn и zh-tw будут удалены и заменены на коды языков zh-hans и zh-hant соответственно.
  • Внутренний django.utils.functional.memoize будет удален.
  • django.core.cache.get_cache будет удален. Добавьте подходящие записи в CACHES и используйте django.core.cache.caches вместо него.
  • django.db.models.loading будет удален.
  • Передача вызываемых аргументов в querysets больше не будет возможна.
  • BaseCommand.requires_model_validation будет удалено в пользу requires_system_checks. Валидаторы администратора будут заменены проверками администратора.
  • Атрибуты ModelAdmin.validator_class и default_validator_class будут удалены.
  • ModelAdmin.validate() будет удален.
  • django.db.backends.DatabaseValidation.validate_field будет удален в пользу метода check_field.
  • Команда управления validate будет удалена.
  • django.utils.module_loading.import_by_path будет удален в пользу django.utils.module_loading.import_string.
  • Теги шаблонов ssi и url будут удалены из библиотеки тегов шаблонов future (использовались в период устаревания версий 1.3/1.4).
  • django.utils.text.javascript_quote будет удален.
  • Настройки тестирования базы данных как независимые записи в настройках базы данных с префиксом TEST_ больше не будут поддерживаться.
  • Опция cache_choices в ModelChoiceField и ModelMultipleChoiceField будет удалена.
  • Значение по умолчанию атрибута RedirectView.permanent изменится с True на False.
  • django.contrib.sitemaps.FlatPageSitemap будет удален в пользу django.contrib.flatpages.sitemaps.FlatPageSitemap.
  • Частный API django.test.utils.TestTemplateLoader будет удален.
  • Модуль django.contrib.contenttypes.generic будет удален.
  • Частные API django.db.models.sql.where.WhereNode.make_atom() и django.db.models.sql.where.Constraint будут удалены.

1.8

Подробнее об этих изменениях см. в Django 1.6 release notes.

  • django.contrib.comments будет удален.
  • Следующие API управления транзакциями будут удалены:
    • TransactionMiddleware,
    • декораторы и менеджеры контекста autocommit, commit_on_success и commit_manually, определенные в django.db.transaction,
    • функции commit_unless_managed и rollback_unless_managed, также определенные в django.db.transaction,
    • настройка TRANSACTIONS_MANAGED.
  • Теги шаблонов cycle и firstof будут автоэскейпировать свои аргументы. В версиях 1.6 и 1.7 это поведение обеспечивается версией этих тегов в библиотеке тегов шаблонов future.
  • Настройка SEND_BROKEN_LINK_EMAILS будет удалена. Вместо этого добавьте промежуточную программу django.middleware.common.BrokenLinkEmailsMiddleware к настройке MIDDLEWARE_CLASSES.
  • django.middleware.doc.XViewMiddleware будет удален. Вместо этого используйте django.contrib.admindocs.middleware.XViewMiddleware.
  • Model._meta.module_name был переименован в model_name.
  • Удалите обратно совместимые шиммы, введенные для переименования get_query_set и подобных методов queryset. Это затрагивает следующие классы: BaseModelAdmin, ChangeList, BaseCommentNode, GenericForeignKey, Manager, SingleRelatedObjectDescriptor и ReverseSingleRelatedObjectDescriptor.
  • Удалите шиммы обратной совместимости, введенные для переименования атрибутов ChangeList.root_query_set и ChangeList.query_set.
  • django.views.defaults.shortcut будет удален, как часть цели удаления всех ссылок django.contrib из основной кодовой базы Django. Вместо этого используйте django.contrib.contenttypes.views.shortcut. django.conf.urls.shortcut также будет удален.
  • Поддержка модуля Python Imaging Library (PIL) будет удалена, поскольку он больше не поддерживается активно и не работает на Python 3.
  • Следующие частные API будут удалены:
    • django.db.backend
    • django.db.close_connection()
    • django.db.backends.creation.BaseDatabaseCreation.set_autocommit()
    • django.db.transaction.is_managed()
    • django.db.transaction.managed()
  • django.forms.widgets.RadioInput будет удален в пользу django.forms.widgets.RadioChoiceInput.
  • Модуль django.test.simple и класс django.test.simple.DjangoTestSuiteRunner будут удалены. Вместо них используйте django.test.runner.DiscoverRunner.
  • Модуль django.test._doctest будет удален. Вместо него используйте модуль doctest из стандартной библиотеки Python.
  • Настройка CACHE_MIDDLEWARE_ANONYMOUS_ONLY будет удалена.
  • Использование жестко закодированной Hold down «Control», или «Command» на Mac, для выбора более чем одного. строки для переопределения или добавления к предоставленным пользователем help_text в формах для полей модели ManyToMany больше не будет выполняться Django ни на уровне модели, ни на уровне форм.
  • Методы Model._meta.get_(add|change|delete)_permission будут удалены.
  • Ключ сессии django_language больше не будет считываться для обратной совместимости.
  • Географические Sitemaps будут удалены (django.contrib.gis.sitemaps.views.index и django.contrib.gis.sitemaps.views.sitemap).
  • django.utils.html.fix_ampersands, фильтр шаблонов fix_ampersands и django.utils.html.clean_html будут удалены после ускоренной депривации.

1.7

Подробнее об этих изменениях см. в Django 1.5 release notes.

  • Модуль django.utils.simplejson будет удален. Стандартная библиотека предоставляет json, который следует использовать вместо него.
  • Функция django.utils.itercompat.product будет удалена. Вместо нее следует использовать встроенную версию Python.
  • Автокоррекция параметров INSTALLED_APPS и TEMPLATE_DIRS, когда они указаны в виде простой строки вместо кортежа, будет удалена и вызовет исключение.
  • Аргумент mimetype в методах __init__ HttpResponse, SimpleTemplateResponse и TemplateResponse будет удален. Вместо него следует использовать content_type. Это также относится к ярлыку render_to_response() и представлениям карты сайта index() и sitemap().
  • Когда HttpResponse инстанцируется с итератором, или когда content устанавливается на итератор, этот итератор будет немедленно потреблен.
  • Настройка AUTH_PROFILE_MODULE и метод get_profile() в модели User будут удалены.
  • Команда управления cleanup будет удалена. Она заменяется на clearsessions.
  • Скрипт daily_cleanup.py будет удален.
  • Аргумент с ключевым словом depth будет удален из select_related().
  • Недокументированные функции get_warnings_state()/restore_warnings_state() из django.test.utils и методы save_warnings_state()/ restore_warnings_state() django.test.*TestCase устарели. Вместо них используйте менеджер контекста warnings.catch_warnings, доступный начиная с Python 2.6.
  • Недокументированный метод check_for_test_cookie в AuthenticationForm будет удален после ускоренной депривации. Пользователи, подклассифицирующие эту форму, должны удалить вызовы этого метода и вместо этого убедиться, что их представления, связанные с авторизацией, защищены CSRF, что гарантирует включение cookies.
  • Версия django.contrib.auth.views.password_reset_confirm(), поддерживающая идентификаторы пользователей в кодировке base36 (django.contrib.auth.views.password_reset_confirm_uidb36), будет удалена. Если ваш сайт работает на Django 1.6 уже более PASSWORD_RESET_TIMEOUT_DAYS, это изменение не будет иметь никакого эффекта. Если нет, то все ссылки на сброс пароля, созданные до обновления до Django 1.7, не будут работать после обновления.
  • Микшер django.utils.encoding.StrAndUnicode будет удален.

1.6

Подробнее об этих изменениях см. в Django 1.4 release notes.

  • django.contrib.databrowse будет удален.
  • django.contrib.localflavor будет удален после ускоренной депривации.
  • django.contrib.markup будет удален после ускоренной депривации.
  • Модули совместимости django.utils.copycompat и django.utils.hashcompat, а также функции django.utils.itercompat.all и django.utils.itercompat.any будут удалены. Вместо них следует использовать встроенные версии Python.
  • Декораторы csrf_response_exempt и csrf_view_exempt будут удалены. Начиная с версии 1.4 csrf_response_exempt является неоператором (возвращает ту же функцию), а csrf_view_exempt является синонимом django.views.decorators.csrf.csrf_exempt, который следует использовать для его замены.
  • Бэкенд django.core.cache.backends.memcached.CacheClass был разделен на два в Django 1.3 для того, чтобы ввести поддержку PyLibMC. Исторический CacheClass будет удален в пользу django.core.cache.backends.memcached.MemcachedCache.
  • Объекты с префиксом UK в django.contrib.localflavor.uk будут доступны только через их имена с префиксом GB (GB - это правильный код ISO 3166 для Соединенного Королевства).
  • Настройки IGNORABLE_404_STARTS и IGNORABLE_404_ENDS были заменены на IGNORABLE_404_URLS в релизе 1.4. Они будут удалены.
  • Мастер форм был рефакторингован для использования представлений на основе классов с подключаемыми бэкендами в версии 1.4. Предыдущая реализация будет удалена.
  • Устаревшие способы вызова cache_page() будут удалены.
  • Шим обратной совместимости для автоматического добавления фильтра debug-false в обработчик логирования 'mail_admins' будет удален. Настройка LOGGING должна включать этот фильтр в явном виде, если он желателен.
  • Встроенные функции усечения django.utils.text.truncate_words() и django.utils.text.truncate_html_words() будут удалены в пользу класса django.utils.text.Truncator.
  • Класс django.contrib.gis.geoip.GeoIP был перенесен в django.contrib.gis.geoip в 1.4 - ярлык в django.contrib.gis.utils будет удален.
  • django.conf.urls.defaults будет удалена. Функции include(), patterns() и url(), а также handler404 и handler500 теперь доступны через django.conf.urls.
  • Функции setup_environ() и execute_manager() будут удалены из django.core.management. Это также означает, что старый (до версии 1.4) стиль файла manage.py больше не будет работать.
  • Установка флагов is_safe и needs_autoescape в качестве атрибутов функций фильтрации шаблонов больше не будет поддерживаться.
  • Атрибут HttpRequest.raw_post_data был переименован в HttpRequest.body в версии 1.4. Обратная совместимость будет удалена – HttpRequest.raw_post_data больше не будет работать.
  • Значение параметра post_url_continue в ModelAdmin.response_add() должно быть либо None (для перенаправления на страницу редактирования вновь созданного объекта), либо предварительно отформатированный url. Строковые форматы, такие как предыдущее значение по умолчанию '../%s/', больше не будут приниматься.

1.5

Подробнее об этих изменениях см. в Django 1.3 release notes.

  • Запуск Django без SECRET_KEY приведет к исключению, а не к DeprecationWarning. (Это ускорение от обычного пути обесценивания; см. Django 1.4 release notes).
  • Обработчик запросов mod_python будет удален. Вместо него следует использовать обработчик mod_wsgi.
  • Атрибут template на объектах django.test.client.Response, возвращаемых командой test client, будет удален. Вместо него следует использовать атрибут templates.
  • Код django.test.simple.DjangoTestRunner будет удален. Вместо него используйте unittest-родной класс. Возможности django.test.simple.DjangoTestRunner (включая fail-fast и завершение теста Ctrl-C) могут быть предоставлены unittest.TextTestRunner.
  • Недокументированная функция django.contrib.formtools.utils.security_hash будет удалена, вместо нее используйте django.contrib.formtools.utils.form_hmac
  • Модули общих представлений, основанные на функциях, будут удалены в пользу их эквивалентов, основанных на классах, изложенных here.
  • Символ django.core.servers.basehttp.AdminMediaHandler будет удален. Вместо него используйте django.contrib.staticfiles.handlers.StaticFilesHandler.
  • Библиотека тегов шаблонов adminmedia и тег шаблона {% admin_media_prefix %} будут удалены в пользу общей обработки статических файлов. (Это быстрее, чем обычный путь депривации; см. Django 1.4 release notes).
  • Шаблонные теги url и ssi будут изменены таким образом, что первым аргументом каждого тега будет переменная шаблона, а не подразумеваемая строка. В версии 1.4 такое поведение обеспечивается версией тега в библиотеке тегов шаблонов future.
  • Команды управления reset и sqlreset будут удалены.
  • Бэкенды аутентификации должны будут поддерживать передачу неактивного пользователя во все методы, работающие с разрешениями. Атрибут supports_inactive_user больше не будет проверяться и может быть удален из пользовательских бэкендов.
  • transform() вызовет ошибку GEOSException при вызове геометрии, не имеющей значения SRID.
  • django.http.CompatCookie будет удален в пользу django.http.SimpleCookie.
  • django.core.context_processors.PermWrapper и django.core.context_processors.PermLookupDict будут удалены в пользу соответствующих django.contrib.auth.context_processors.PermWrapper и django.contrib.auth.context_processors.PermLookupDict, соответственно.
  • Параметры MEDIA_URL или STATIC_URL должны заканчиваться косой чертой, чтобы обеспечить последовательный способ объединения путей в шаблонах.
  • django.db.models.fields.URLField.verify_exists будет удалена. Эта функция была упразднена в версии 1.3.1 из-за неустранимых проблем с безопасностью и производительностью, и теперь срок ее упразднения будет несколько ускорен.
  • Переводы, расположенные в так называемом пути проекта, будут игнорироваться в процессе сборки переводов, выполняемом во время исполнения. Для этой же задачи можно использовать параметр LOCALE_PATHS, включив в его значение путь файловой системы к каталогу locale, содержащему неспецифические для приложения переводы.
  • Приложение Markup contrib больше не будет поддерживать версии библиотеки Python-Markdown ранее 2.1. Был использован ускоренный график, так как это было связано с безопасностью.
  • Настройка CACHE_BACKEND будет удалена. Бэкэнд(ы) кэша должен быть указан(ы) в настройке CACHES.

1.4

Подробнее об этих изменениях см. в Django 1.2 release notes.

  • CsrfResponseMiddleware и CsrfMiddleware будут удалены. Используйте тег шаблона {% csrf_token %} внутри форм для включения защиты от CSRF. CsrfViewMiddleware останется и будет включен по умолчанию.
  • Старый импорт для функциональности CSRF (django.contrib.csrf.*), который перешел в ядро в версии 1.2, будет удален.
  • Модуль django.contrib.gis.db.backend будет удален в пользу конкретных бэкендов.
  • SMTPConnection будет удален в пользу общего API бэкенда электронной почты.
  • Многие функции генерации SQL на бэкендах баз данных будут удалены.
  • Возможность использовать семейство параметров верхнего уровня DATABASE_* для определения соединений с базой данных будет удалена.
  • Возможность использовать сокращенную нотацию для указания бэкенда базы данных (например, sqlite3 вместо django.db.backends.sqlite3) будет удалена.
  • Методы get_db_prep_save, get_db_prep_value и get_db_prep_lookup должны будут поддерживать несколько баз данных.
  • Модель Messagedjango.contrib.auth), связанный с ней менеджер в модели User (user.message_set) и связанные с ним методы (user.message_set.create() и user.get_and_delete_messages()) будут удалены. Вместо них следует использовать messages framework. Связанная переменная messages, возвращаемая процессором контекста auth, также будет удалена. Обратите внимание, что это означает, что приложение администратора будет зависеть от процессора контекста сообщений.
  • Бэкенды аутентификации должны будут поддерживать параметр obj для проверки разрешений. Атрибут supports_object_permissions больше не будет проверяться и может быть удален из пользовательских бэкендов.
  • Бэкенды аутентификации должны будут поддерживать передачу класса AnonymousUser во все методы, работающие с разрешениями. Переменная supports_anonymous_user больше не будет проверяться и может быть удалена из пользовательских бэкендов.
  • Возможность указать вызываемый загрузчик шаблонов, а не класс Loader будет удалена, как и функции load_template_source, включенные во встроенные загрузчики шаблонов для обратной совместимости.
  • django.utils.translation.get_date_formats() и django.utils.translation.get_partial_date_formats(). Эти функции будут удалены; используйте локально-ориентированную django.utils.formats.get_format() для получения соответствующих форматов.
  • В django.forms.fields, константы: DEFAULT_DATE_INPUT_FORMATS, DEFAULT_TIME_INPUT_FORMATS и DEFAULT_DATETIME_INPUT_FORMATS будут удалены. Используйте django.utils.formats.get_format() для получения соответствующих форматов.
  • Возможность использовать бегунок тестирования на основе функций будет удалена вместе с бегунком тестирования django.test.simple.run_tests().
  • Представление views.feed() и класс feeds.Feed в django.contrib.syndication будут удалены. Вместо них следует использовать основанный на классах вид views.Feed.
  • django.core.context_processors.auth. В этом выпуске старый метод будет удален в пользу нового метода в django.contrib.auth.context_processors.auth.
  • Бэкенд базы данных postgresql будет удален, вместо него используйте бэкенд postgresql_psycopg2.
  • Код языка no будет удален и заменен на код языка nb.
  • Бэкенды аутентификации должны будут определять атрибут boolean supports_inactive_user до версии 1.5, когда будет предполагаться, что все бэкенды будут обрабатывать неактивных пользователей.
  • django.db.models.fields.XMLField будет удалено. Это поле было устаревшим в релизе 1.3. Был использован график ускоренной амортизации, поскольку поле не выполняло никакой роли, кроме роли простого TextField с момента удаления oldforms. Все случаи использования XMLField могут быть заменены на TextField.
  • Недокументированный параметр mixin к методу open() в django.core.files.storage.Storage (и подклассах) будет удален.

1.3

Подробнее об этих изменениях см. в Django 1.1 release notes.

  • AdminSite.root(). Этот способ подключения URL-адресов администратора будет удален в пользу включения admin.site.urls.
  • Бэкенды аутентификации должны определить булевы атрибуты supports_object_permissions и supports_anonymous_user до версии 1.4, после чего будет считаться, что все бэкенды будут поддерживать эти опции.
Вернуться на верх