Django Deprecation Timeline
This document outlines when various pieces of Django will be removed, following
their deprecation, as per the Django deprecation policy
- 1.3
- AdminSite.root(). This release will remove the old method for
hooking up admin URLs. This has been deprecated since the 1.1
release.
- Authentication backends need to define the boolean attributes
supports_object_permissions and supports_anonymous_user.
The old backend style is deprecated since the 1.2 release.
- The django.contrib.gis.db.backend module, including the
SpatialBackend interface, is deprecated since the 1.2 release.
- 1.4
- CsrfResponseMiddleware. This has been deprecated since the 1.2
release, in favour of the template tag method for inserting the CSRF
token. CsrfMiddleware, which combines CsrfResponseMiddleware
and CsrfViewMiddleware, is also deprecated.
- The old imports for CSRF functionality (django.contrib.csrf.*),
which moved to core in 1.2, will be removed.
- SMTPConnection. The 1.2 release deprecated the SMTPConnection
class in favor of a generic E-mail backend API.
- The many to many SQL generation functions on the database backends
will be removed.
- The ability to use the DATABASE_* family of top-level settings to
define database connections will be removed.
- The ability to use shorthand notation to specify a database backend
(i.e., sqlite3 instead of django.db.backends.sqlite3) will be
removed.
- The get_db_prep_save, get_db_prep_value and
get_db_prep_lookup methods on Field were modified in 1.2 to support
multiple databases. In 1.4, the support functions that allow methods
with the old prototype to continue working will be removed.
- The Message model (in django.contrib.auth), its related
manager in the User model (user.message_set), and the
associated methods (user.message_set.create() and
user.get_and_delete_messages()), which have
been deprecated since the 1.2 release, will be removed. The
messages framework should be used
instead.
- Authentication backends need to support the obj parameter for
permission checking. The supports_object_permissions variable
is not checked any longer and can be removed.
- Authentication backends need to support the AnonymousUser
being passed to all methods dealing with permissions.
The supports_anonymous_user variable is not checked any
longer and can be removed.
- The ability to specify a callable template loader rather than a
Loader class will be removed, as will the load_template_source
functions that are included with the built in template loaders for
backwards compatibility. These have been deprecated since the 1.2
release.
- django.utils.translation.get_date_formats() and
django.utils.translation.get_partial_date_formats(). These
functions are replaced by the new locale aware formatting; use
django.utils.formats.get_format() to get the appropriate
formats.
- In django.forms.fields: DEFAULT_DATE_INPUT_FORMATS,
DEFAULT_TIME_INPUT_FORMATS and
DEFAULT_DATETIME_INPUT_FORMATS. Use
django.utils.formats.get_format() to get the appropriate
formats.
- The ability to use a function-based test runners will be removed,
along with the django.test.simple.run_tests() test runner.
- The views.feed() view and feeds.Feed class in
django.contrib.syndication have been deprecated since the 1.2
release. The class-based view views.Feed should be used instead.
- django.core.context_processors.auth. This release will
remove the old method in favor of the new method in
django.contrib.auth.context_processors.auth. This has been
deprecated since the 1.2 release.
- The postgresql database backend has been deprecated in favor of
the postgresql_psycopg2 backend.
- The no language code has been deprecated in favor of the nb
language code.
- 2.0
- django.views.defaults.shortcut(). This function has been moved
to django.contrib.contenttypes.views.shortcut() as part of the
goal of removing all django.contrib references from the core
Django codebase. The old shortcut will be removed in the 2.0
release.