123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254 |
- ===========================
- Django Deprecation Timeline
- ===========================
- This document outlines when various pieces of Django will be removed or altered
- in a backward incompatible way, following their deprecation, as per the
- :ref:`deprecation policy <internal-release-deprecation-policy>`. More details
- about each item can often be found in the release notes of two versions prior.
- 1.7
- ---
- See the :doc:`Django 1.5 release notes</releases/1.5>` for more details on
- these changes.
- * The module ``django.utils.simplejson`` will be removed. The standard library
- provides :mod:`json` which should be used instead.
- * The function ``django.utils.itercompat.product`` will be removed. The Python
- builtin version should be used instead.
- * Auto-correction of INSTALLED_APPS and TEMPLATE_DIRS settings when they are
- specified as a plain string instead of a tuple will be removed and raise an
- exception.
- * The ``mimetype`` argument to the ``__init__`` methods of
- :class:`~django.http.HttpResponse`,
- :class:`~django.template.response.SimpleTemplateResponse`, and
- :class:`~django.template.response.TemplateResponse`, will be removed.
- ``content_type`` should be used instead. This also applies to the
- :func:`~django.shortcuts.render_to_response` shortcut and
- the sitemap views, :func:`~django.contrib.sitemaps.views.index` and
- :func:`~django.contrib.sitemaps.views.sitemap`.
- * When :class:`~django.http.HttpResponse` is instantiated with an iterator,
- or when :attr:`~django.http.HttpResponse.content` is set to an iterator,
- that iterator will be immediately consumed.
- * The ``AUTH_PROFILE_MODULE`` setting, and the ``get_profile()`` method on
- the User model, will be removed.
- * The ``cleanup`` management command will be removed. It's replaced by
- ``clearsessions``.
- * The ``daily_cleanup.py`` script will be removed.
- * The ``depth`` keyword argument will be removed from
- :meth:`~django.db.models.query.QuerySet.select_related`.
- * The undocumented ``get_warnings_state()``/``restore_warnings_state()``
- functions from :mod:`django.test.utils` and the ``save_warnings_state()``/
- ``restore_warnings_state()``
- :ref:`django.test.*TestCase <django-testcase-subclasses>` methods are
- deprecated. Use the :class:`warnings.catch_warnings` context manager
- available starting with Python 2.6 instead.
- * The undocumented ``check_for_test_cookie`` method in
- :class:`~django.contrib.auth.forms.AuthenticationForm` will be removed
- following an accelerated deprecation. Users subclassing this form should
- remove calls to this method, and instead ensure that their auth related views
- are CSRF protected, which ensures that cookies are enabled.
- * The version of :func:`django.contrib.auth.views.password_reset_confirm` that
- supports base36 encoded user IDs
- (``django.contrib.auth.views.password_reset_confirm_uidb36``) will be
- removed. If your site has been running Django 1.6 for more than
- :setting:`PASSWORD_RESET_TIMEOUT_DAYS`, this change will have no effect. If
- not, then any password reset links generated before you upgrade to Django 1.7
- won't work after the upgrade.
- 1.8
- ---
- * ``django.contrib.comments`` will be removed.
- * The following transaction management APIs will be removed:
- - ``TransactionMiddleware``,
- - the decorators and context managers ``autocommit``, ``commit_on_success``,
- and ``commit_manually``, defined in ``django.db.transaction``,
- - the functions ``commit_unless_managed`` and ``rollback_unless_managed``,
- also defined in ``django.db.transaction``,
- - the ``TRANSACTIONS_MANAGED`` setting.
- Upgrade paths are described in the :ref:`transaction management docs
- <transactions-upgrading-from-1.5>`.
- * The :ttag:`cycle` and :ttag:`firstof` template tags will auto-escape their
- arguments. In 1.6 and 1.7, this behavior is provided by the version of these
- tags in the ``future`` template tag library.
- * The ``SEND_BROKEN_LINK_EMAILS`` setting will be removed. Add the
- :class:`django.middleware.common.BrokenLinkEmailsMiddleware` middleware to
- your :setting:`MIDDLEWARE_CLASSES` setting instead.
- * ``Model._meta.module_name`` was renamed to ``model_name``.
- * Remove the backward compatible shims introduced to rename ``get_query_set``
- and similar queryset methods. This affects the following classes:
- ``BaseModelAdmin``, ``ChangeList``, ``BaseCommentNode``,
- ``GenericForeignKey``, ``Manager``, ``SingleRelatedObjectDescriptor`` and
- ``ReverseSingleRelatedObjectDescriptor``.
- * Remove the backward compatible shims introduced to rename the attributes
- ``ChangeList.root_query_set`` and ``ChangeList.query_set``.
- * ``django.views.defaults.shortcut`` will be removed, as part of the
- goal of removing all ``django.contrib`` references from the core
- Django codebase. Instead use
- ``django.contrib.contenttypes.views.shortcut``. ``django.conf.urls.shortcut``
- will also be removed.
- * Support for the Python Imaging Library (PIL) module will be removed, as it
- no longer appears to be actively maintained & does not work on Python 3.
- You are advised to install `Pillow`_, which should be used instead.
- .. _`Pillow`: https://pypi.python.org/pypi/Pillow
- * The following private APIs will be removed:
- - ``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`` will be removed in favor of
- ``django.forms.widgets.RadioChoiceInput``.
- * The module ``django.test.simple`` and the class
- ``django.test.simple.DjangoTestSuiteRunner`` will be removed. Instead use
- ``django.test.runner.DiscoverRunner``.
- * The module ``django.test._doctest`` will be removed. Instead use the doctest
- module from the Python standard library.
- * The ``CACHE_MIDDLEWARE_ANONYMOUS_ONLY`` setting will be removed.
- * Usage of the hard-coded *Hold down "Control", or "Command" on a Mac, to select
- more than one.* string to override or append to user-provided ``help_text`` in
- forms for ManyToMany model fields will not be performed by Django anymore
- either at the model or forms layer.
- * The ``Model._meta.get_(add|change|delete)_permission`` methods will
- be removed.
- * The session key ``django_language`` will no longer be read for backwards
- compatibility.
- * Geographic Sitemaps will be removed
- (``django.contrib.gis.sitemaps.views.index`` and
- ``django.contrib.gis.sitemaps.views.sitemap``).
- 1.9
- ---
- * ``django.utils.dictconfig`` will be removed.
- * ``django.utils.importlib`` will be removed.
- * ``django.utils.tzinfo`` will be removed.
- * ``django.utils.unittest`` will be removed.
- * The ``syncdb`` command will be removed.
- * ``django.db.models.signals.pre_syncdb`` and
- ``django.db.models.signals.post_syncdb`` will be removed.
- * ``allow_syncdb`` on database routers will no longer automatically become
- ``allow_migrate``.
- * All models will need to be defined inside an installed application or
- declare an explicit :attr:`~django.db.models.Options.app_label`.
- Furthermore, it won't be possible to import them before their application
- is loaded. In particular, it won't be possible to import models inside
- the root package of their application.
- * If models are organized in a package, Django will no longer look for
- :ref:`initial SQL data<initial-sql>` in ``myapp/models/sql/``. Move your
- custom SQL files to ``myapp/sql/``.
- * The model and form ``IPAddressField`` will be removed.
- * ``AppCommand.handle_app()`` will no longer be supported.
- * ``RequestSite`` will be located in ``django.contrib.sites.requests`` and
- ``get_current_site`` in ``django.contrib.sites.shortcuts``.
- * FastCGI support via the ``runfcgi`` management command will be
- removed. Please deploy your project using WSGI.
- * ``django.utils.datastructures.SortedDict`` will be removed. Use
- :class:`collections.OrderedDict` from the Python standard library instead.
- * ``ModelAdmin.declared_fieldsets`` will be removed.
- * Instances of ``util.py`` in the Django codebase have been renamed to
- ``utils.py`` in an effort to unify all util and utils references.
- The modules that provided backwards compatibility will be removed:
- * ``django.contrib.admin.util``
- * ``django.contrib.gis.db.backends.util``
- * ``django.db.backends.util``
- * ``django.forms.util``
- * ``ModelAdmin.get_formsets`` will be removed.
- * Remove the backward compatible shims introduced to rename the
- ``BaseMemcachedCache._get_memcache_timeout()`` method to
- ``get_backend_timeout()``.
- * The ``--natural`` and ``-n`` options for :djadmin:`dumpdata` will be removed.
- Use :djadminopt:`--natural-foreign` instead.
- * The ``use_natural_keys`` argument for ``serializers.serialize()`` will be
- removed. Use ``use_natural_foreign_keys`` instead.
- * ``django.forms.get_declared_fields`` will be removed.
- * The ability to use a ``SplitDateTimeWidget`` with ``DateTimeField`` will be
- removed.
- * The ``WSGIRequest.REQUEST`` property will be removed.
- * The class ``django.utils.datastructures.MergeDict`` will be removed.
- * The ``zh-cn`` and ``zh-tw`` language codes will be removed and have been
- replaced by the ``zh-hans`` and ``zh-hant`` language code respectively.
- * The internal ``django.utils.functional.memoize`` will be removed.
- * ``django.core.cache.get_cache`` will be removed. Add suitable entries
- to :setting:`CACHES` and use :data:`django.core.cache.caches` instead.
- * ``django.db.models.loading`` will be removed.
- * Passing callable arguments to querysets will no longer be possible.
- * ``BaseCommand.requires_model_validation`` will be removed in favor of
- ``requires_system_checks``. Admin validators will be replaced by admin
- checks.
- * ``ModelAdmin.validator`` will be removed in favor of the new ``checks``
- attribute.
- * ``django.db.backends.DatabaseValidation.validate_field`` will be removed in
- favor of the ``check_field`` method.
- 2.0
- ---
- * ``ssi`` and ``url`` template tags will be removed from the ``future`` template
- tag library (used during the 1.3/1.4 deprecation period).
|