mirror of
https://github.com/django/django.git
synced 2024-11-29 14:46:18 +01:00
0179852d7f
Thanks Tim Graham for the review.
242 lines
9.4 KiB
Plaintext
242 lines
9.4 KiB
Plaintext
===========================
|
|
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.
|
|
|
|
* 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.
|
|
|
|
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).
|