1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408 |
- ===========================
- 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.
- .. _deprecation-removed-in-6.1:
- 6.1
- ---
- See the :ref:`Django 5.2 release notes <deprecated-features-5.2>` for more
- details on these changes.
- * The ``all`` keyword argument of ``django.contrib.staticfiles.finders.find()``
- will be removed.
- * The fallback to ``request.user`` when ``user`` is ``None`` in
- ``django.contrib.auth.login()`` and ``django.contrib.auth.alogin()`` will be
- removed.
- .. _deprecation-removed-in-6.0:
- 6.0
- ---
- See the :ref:`Django 5.0 release notes <deprecated-features-5.0>` for more
- details on these changes.
- * The ``DjangoDivFormRenderer`` and ``Jinja2DivFormRenderer`` transitional form
- renderers will be removed.
- * Support for passing positional arguments to ``BaseConstraint`` will be
- removed.
- * ``request`` will be required in the signature of
- ``ModelAdmin.lookup_allowed()`` subclasses.
- * The ``django.db.models.sql.datastructures.Join`` will no longer fallback to
- ``get_joining_columns()``.
- * The ``get_joining_columns()`` method of ``ForeignObject`` and
- ``ForeignObjectRel`` will be removed.
- * The ``ForeignObject.get_reverse_joining_columns()`` method will be removed.
- * The default scheme for ``forms.URLField`` will change from ``"http"`` to
- ``"https"``.
- * Support for calling ``format_html()`` without passing args or kwargs will be
- removed.
- * Support for ``cx_Oracle`` will be removed.
- * ``BaseDatabaseOperations.field_cast_sql()`` will be removed.
- * The ``ChoicesMeta`` alias to ``django.db.models.enums.ChoicesType`` will be
- removed.
- * The ``Prefetch.get_current_queryset()`` method will be removed.
- * The ``get_prefetch_queryset()`` method of related managers and descriptors
- will be removed.
- * ``get_prefetcher()`` and ``prefetch_related_objects()`` will no longer
- fallback to ``get_prefetch_queryset()``.
- * The ``FORMS_URLFIELD_ASSUME_HTTPS`` transitional setting will be removed.
- See the :ref:`Django 5.1 release notes <deprecated-features-5.1>` for more
- details on these changes.
- * The ``ModelAdmin.log_deletion()`` and ``LogEntryManager.log_action()``
- methods will be removed.
- * The undocumented ``django.utils.itercompat.is_iterable()`` function and the
- ``django.utils.itercompat`` module will be removed.
- * The ``django.contrib.gis.geoip2.GeoIP2.coords()`` method will be removed.
- * The ``django.contrib.gis.geoip2.GeoIP2.open()`` method will be removed.
- * Support for passing positional arguments to ``Model.save()`` and
- ``Model.asave()`` will be removed.
- * The setter for ``django.contrib.gis.gdal.OGRGeometry.coord_dim`` will be
- removed.
- * ``django.urls.register_converter()`` will no longer allow overriding existing
- converters.
- * The ``check`` keyword argument of ``CheckConstraint`` will be removed.
- * The ``OS_OPEN_FLAGS`` attribute of
- :class:`~django.core.files.storage.FileSystemStorage` will be removed.
- * The ``get_cache_name()`` method of ``FieldCacheMixin`` will be removed.
- .. _deprecation-removed-in-5.1:
- 5.1
- ---
- See the :ref:`Django 4.2 release notes <deprecated-features-4.2>` for more
- details on these changes.
- * The ``BaseUserManager.make_random_password()`` method will be removed.
- * The model's ``Meta.index_together`` option will be removed.
- * The ``length_is`` template filter will be removed.
- * The ``django.contrib.auth.hashers.SHA1PasswordHasher``,
- ``django.contrib.auth.hashers.UnsaltedSHA1PasswordHasher``, and
- ``django.contrib.auth.hashers.UnsaltedMD5PasswordHasher`` will be removed.
- * The model ``django.contrib.postgres.fields.CICharField``,
- ``django.contrib.postgres.fields.CIEmailField``, and
- ``django.contrib.postgres.fields.CITextField`` will be removed. Stub fields
- will remain for compatibility with historical migrations.
- * The ``django.contrib.postgres.fields.CIText`` mixin will be removed.
- * The ``map_width`` and ``map_height`` attributes of ``BaseGeometryWidget``
- will be removed.
- * The ``SimpleTestCase.assertFormsetError()`` method will be removed.
- * The ``TransactionTestCase.assertQuerysetEqual()`` method will be removed.
- * Support for passing encoded JSON string literals to ``JSONField`` and
- associated lookups and expressions will be removed.
- * Support for passing positional arguments to ``Signer`` and
- ``TimestampSigner`` will be removed.
- * The ``DEFAULT_FILE_STORAGE`` and ``STATICFILES_STORAGE`` settings will be
- removed.
- * The ``django.core.files.storage.get_storage_class()`` function will be
- removed.
- .. _deprecation-removed-in-5.0:
- 5.0
- ---
- See the :ref:`Django 4.0 release notes <deprecated-features-4.0>` for more
- details on these changes.
- * The ``SERIALIZE`` test setting will be removed.
- * The undocumented ``django.utils.baseconv`` module will be removed.
- * The undocumented ``django.utils.datetime_safe`` module will be removed.
- * The default value of the ``USE_TZ`` setting will change from ``False`` to
- ``True``.
- * The default sitemap protocol for sitemaps built outside the context of a
- request will change from ``'http'`` to ``'https'``.
- * The ``extra_tests`` argument for ``DiscoverRunner.build_suite()`` and
- ``DiscoverRunner.run_tests()`` will be removed.
- * The ``django.contrib.postgres.aggregates.ArrayAgg``, ``JSONBAgg``, and
- ``StringAgg`` aggregates will return ``None`` when there are no rows instead
- of ``[]``, ``[]``, and ``''`` respectively.
- * The ``USE_L10N`` setting will be removed.
- * The ``USE_DEPRECATED_PYTZ`` transitional setting will be removed.
- * Support for ``pytz`` timezones will be removed.
- * The ``is_dst`` argument will be removed from:
- * ``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()``
- * The ``django.contrib.gis.admin.GeoModelAdmin`` and ``OSMGeoAdmin`` classes
- will be removed.
- * The undocumented ``BaseForm._html_output()`` method will be removed.
- * The ability to return a ``str``, rather than a ``SafeString``, when rendering
- an ``ErrorDict`` and ``ErrorList`` will be removed.
- See the :ref:`Django 4.1 release notes <deprecated-features-4.1>` for more
- details on these changes.
- * The ``SitemapIndexItem.__str__()`` method will be removed.
- * The ``CSRF_COOKIE_MASKED`` transitional setting will be removed.
- * The ``name`` argument of ``django.utils.functional.cached_property()`` will
- be removed.
- * The ``opclasses`` argument of
- ``django.contrib.postgres.constraints.ExclusionConstraint`` will be removed.
- * The undocumented ability to pass ``errors=None`` to
- ``SimpleTestCase.assertFormError()`` and ``assertFormsetError()`` will be
- removed.
- * ``django.contrib.sessions.serializers.PickleSerializer`` will be removed.
- * The usage of ``QuerySet.iterator()`` on a queryset that prefetches related
- objects without providing the ``chunk_size`` argument will no longer be
- allowed.
- * Passing unsaved model instances to related filters will no longer be allowed.
- * ``created=True`` will be required in the signature of
- ``RemoteUserBackend.configure_user()`` subclasses.
- * Support for logging out via ``GET`` requests in the
- ``django.contrib.auth.views.LogoutView`` and
- ``django.contrib.auth.views.logout_then_login()`` will be removed.
- * The ``django.utils.timezone.utc`` alias to ``datetime.timezone.utc`` will be
- removed.
- * Passing a response object and a form/formset name to
- ``SimpleTestCase.assertFormError()`` and ``assertFormsetError()`` will no
- longer be allowed.
- * The ``django.contrib.gis.admin.OpenLayersWidget`` will be removed.
- * The ``django.contrib.auth.hashers.CryptPasswordHasher`` will be removed.
- * The ``"django/forms/default.html"`` and
- ``"django/forms/formsets/default.html"`` templates will be removed.
- * The ability to pass ``nulls_first=False`` or ``nulls_last=False`` to
- ``Expression.asc()`` and ``Expression.desc()`` methods, and the ``OrderBy``
- expression will be removed.
- .. _deprecation-removed-in-4.1:
- 4.1
- ---
- See the :ref:`Django 3.2 release notes <deprecated-features-3.2>` for more
- details on these changes.
- * Support for assigning objects which don't support creating deep copies with
- ``copy.deepcopy()`` to class attributes in ``TestCase.setUpTestData()`` will
- be removed.
- * ``BaseCommand.requires_system_checks`` won't support boolean values.
- * The ``whitelist`` argument and ``domain_whitelist`` attribute of
- ``django.core.validators.EmailValidator`` will be removed.
- * The ``default_app_config`` module variable will be removed.
- * ``TransactionTestCase.assertQuerysetEqual()`` will no longer automatically
- call ``repr()`` on a queryset when compared to string values.
- * ``django.core.cache.backends.memcached.MemcachedCache`` will be removed.
- * Support for the pre-Django 3.2 format of messages used by
- ``django.contrib.messages.storage.cookie.CookieStorage`` will be removed.
- .. _deprecation-removed-in-4.0:
- 4.0
- ---
- See the :ref:`Django 3.0 release notes <deprecated-features-3.0>` for more
- details on these changes.
- * ``django.utils.http.urlquote()``, ``urlquote_plus()``, ``urlunquote()``, and
- ``urlunquote_plus()`` will be removed.
- * ``django.utils.encoding.force_text()`` and ``smart_text()`` will be removed.
- * ``django.utils.translation.ugettext()``, ``ugettext_lazy()``,
- ``ugettext_noop()``, ``ungettext()``, and ``ungettext_lazy()`` will be
- removed.
- * ``django.views.i18n.set_language()`` will no longer set the user language in
- ``request.session`` (key ``django.utils.translation.LANGUAGE_SESSION_KEY``).
- * ``alias=None`` will be required in the signature of
- ``django.db.models.Expression.get_group_by_cols()`` subclasses.
- * ``django.utils.text.unescape_entities()`` will be removed.
- * ``django.utils.http.is_safe_url()`` will be removed.
- See the :ref:`Django 3.1 release notes <deprecated-features-3.1>` for more
- details on these changes.
- * The ``PASSWORD_RESET_TIMEOUT_DAYS`` setting will be removed.
- * The undocumented usage of the :lookup:`isnull` lookup with non-boolean values
- as the right-hand side will no longer be allowed.
- * The ``django.db.models.query_utils.InvalidQuery`` exception class will be
- removed.
- * The ``django-admin.py`` entry point will be removed.
- * The ``HttpRequest.is_ajax()`` method will be removed.
- * Support for the pre-Django 3.1 encoding format of cookies values used by
- ``django.contrib.messages.storage.cookie.CookieStorage`` will be removed.
- * Support for the pre-Django 3.1 password reset tokens in the admin site (that
- use the SHA-1 hashing algorithm) will be removed.
- * Support for the pre-Django 3.1 encoding format of sessions will be removed.
- * Support for the pre-Django 3.1 ``django.core.signing.Signer`` signatures
- (encoded with the SHA-1 algorithm) will be removed.
- * Support for the pre-Django 3.1 ``django.core.signing.dumps()`` signatures
- (encoded with the SHA-1 algorithm) in ``django.core.signing.loads()`` will be
- removed.
- * Support for the pre-Django 3.1 user sessions (that use the SHA-1 algorithm)
- will be removed.
- * The ``get_response`` argument for
- ``django.utils.deprecation.MiddlewareMixin.__init__()`` will be required and
- won't accept ``None``.
- * The ``providing_args`` argument for ``django.dispatch.Signal`` will be
- removed.
- * The ``length`` argument for ``django.utils.crypto.get_random_string()`` will
- be required.
- * The ``list`` message for ``ModelMultipleChoiceField`` will be removed.
- * Support for passing raw column aliases to ``QuerySet.order_by()`` will be
- removed.
- * The model ``NullBooleanField`` will be removed. A stub field will remain for
- compatibility with historical migrations.
- * ``django.conf.urls.url()`` will be removed.
- * The model ``django.contrib.postgres.fields.JSONField`` will be removed. A
- stub field will remain for compatibility with historical migrations.
- * ``django.contrib.postgres.forms.JSONField``,
- ``django.contrib.postgres.fields.jsonb.KeyTransform``, and
- ``django.contrib.postgres.fields.jsonb.KeyTextTransform`` will be removed.
- * The ``{% ifequal %}`` and ``{% ifnotequal %}`` template tags will be removed.
- * The ``DEFAULT_HASHING_ALGORITHM`` transitional setting will be removed.
- .. _deprecation-removed-in-3.1:
- 3.1
- ---
- See the :ref:`Django 2.2 release notes <deprecated-features-2.2>` for more
- details on these changes.
- * ``django.utils.timezone.FixedOffset`` will be removed.
- * ``django.core.paginator.QuerySetPaginator`` will be removed.
- * A model's ``Meta.ordering`` will no longer affect ``GROUP BY`` queries.
- * ``django.contrib.postgres.fields.FloatRangeField`` and
- ``django.contrib.postgres.forms.FloatRangeField`` will be removed.
- * The ``FILE_CHARSET`` setting will be removed.
- * ``django.contrib.staticfiles.storage.CachedStaticFilesStorage`` will be
- removed.
- * ``RemoteUserBackend.configure_user()`` will require ``request`` as the first
- positional argument.
- * Support for ``SimpleTestCase.allow_database_queries`` and
- ``TransactionTestCase.multi_db`` will be removed.
- .. _deprecation-removed-in-3.0:
- 3.0
- ---
- See the :ref:`Django 2.0 release notes<deprecated-features-2.0>` for more
- details on these changes.
- * The ``django.db.backends.postgresql_psycopg2`` module will be removed.
- * ``django.shortcuts.render_to_response()`` will be removed.
- * The ``DEFAULT_CONTENT_TYPE`` setting will be removed.
- * ``HttpRequest.xreadlines()`` will be removed.
- * Support for the ``context`` argument of ``Field.from_db_value()`` and
- ``Expression.convert_value()`` will be removed.
- * The ``field_name`` keyword argument of ``QuerySet.earliest()`` and
- ``latest()`` will be removed.
- See the :ref:`Django 2.1 release notes <deprecated-features-2.1>` for more
- details on these changes.
- * ``django.contrib.gis.db.models.functions.ForceRHR`` will be removed.
- * ``django.utils.http.cookie_date()`` will be removed.
- * The ``staticfiles`` and ``admin_static`` template tag libraries will be
- removed.
- * ``django.contrib.staticfiles.templatetags.static()`` will be removed.
- * The shim to allow ``InlineModelAdmin.has_add_permission()`` to be defined
- without an ``obj`` argument will be removed.
- .. _deprecation-removed-in-2.1:
- 2.1
- ---
- See the :ref:`Django 1.11 release notes<deprecated-features-1.11>` for more
- details on these changes.
- * ``contrib.auth.views.login()``, ``logout()``, ``password_change()``,
- ``password_change_done()``, ``password_reset()``, ``password_reset_done()``,
- ``password_reset_confirm()``, and ``password_reset_complete()`` will be
- removed.
- * The ``extra_context`` parameter of ``contrib.auth.views.logout_then_login()``
- will be removed.
- * ``django.test.runner.setup_databases()`` will be removed.
- * ``django.utils.translation.string_concat()`` will be removed.
- * ``django.core.cache.backends.memcached.PyLibMCCache`` will no longer support
- passing ``pylibmc`` behavior settings as top-level attributes of ``OPTIONS``.
- * The ``host`` parameter of ``django.utils.http.is_safe_url()`` will be
- removed.
- * Silencing of exceptions raised while rendering the ``{% include %}`` template
- tag will be removed.
- * ``DatabaseIntrospection.get_indexes()`` will be removed.
- * The ``authenticate()`` method of authentication backends will require
- ``request`` as the first positional argument.
- * The ``django.db.models.permalink()`` decorator will be removed.
- * The ``USE_ETAGS`` setting will be removed. ``CommonMiddleware`` and
- ``django.utils.cache.patch_response_headers()`` will no longer set ETags.
- * The ``Model._meta.has_auto_field`` attribute will be removed.
- * ``url()``'s support for inline flags in regular expression groups (``(?i)``,
- ``(?L)``, ``(?m)``, ``(?s)``, and ``(?u)``) will be removed.
- * Support for ``Widget.render()`` methods without the ``renderer`` argument
- will be removed.
- .. _deprecation-removed-in-2.0:
- 2.0
- ---
- See the :ref:`Django 1.9 release notes<deprecated-features-1.9>` for more
- details on these changes.
- * The ``weak`` argument to ``django.dispatch.signals.Signal.disconnect()`` will
- be removed.
- * ``django.db.backends.base.BaseDatabaseOperations.check_aggregate_support()``
- will be removed.
- * The ``django.forms.extras`` package will be removed.
- * The ``assignment_tag`` helper will be removed.
- * The ``host`` argument to ``assertsRedirects`` will be removed. The
- compatibility layer which allows absolute URLs to be considered equal to
- relative ones when the path is identical will also be removed.
- * ``Field.rel`` will be removed.
- * ``Field.remote_field.to`` attribute will be removed.
- * The ``on_delete`` argument for ``ForeignKey`` and ``OneToOneField`` will be
- required.
- * ``django.db.models.fields.add_lazy_relation()`` will be removed.
- * When time zone support is enabled, database backends that don't support time
- zones won't convert aware datetimes to naive values in UTC anymore when such
- values are passed as parameters to SQL queries executed outside of the ORM,
- e.g. with ``cursor.execute()``.
- * The ``django.contrib.auth.tests.utils.skipIfCustomUser()`` decorator will be
- removed.
- * The ``GeoManager`` and ``GeoQuerySet`` classes will be removed.
- * The ``django.contrib.gis.geoip`` module will be removed.
- * The ``supports_recursion`` check for template loaders will be removed from:
- * ``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()``
- * The ``load_template()`` and ``load_template_sources()`` template loader
- methods will be removed.
- * The ``template_dirs`` argument for template loaders will be removed:
- * ``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()``
- * The ``django.template.loaders.base.Loader.__call__()`` method will be
- removed.
- * Support for custom error views with a single positional parameter will be
- dropped.
- * The ``mime_type`` attribute of ``django.utils.feedgenerator.Atom1Feed`` and
- ``django.utils.feedgenerator.RssFeed`` will be removed in favor of
- ``content_type``.
- * The ``app_name`` argument to ``django.conf.urls.include()`` will be
- removed.
- * Support for passing a 3-tuple as the first argument to ``include()`` will
- be removed.
- * Support for setting a URL instance namespace without an application
- namespace will be removed.
- * ``Field._get_val_from_obj()`` will be removed in favor of
- ``Field.value_from_object()``.
- * ``django.template.loaders.eggs.Loader`` will be removed.
- * The ``current_app`` parameter to the ``contrib.auth`` views will be removed.
- * The ``callable_obj`` keyword argument to
- ``SimpleTestCase.assertRaisesMessage()`` will be removed.
- * Support for the ``allow_tags`` attribute on ``ModelAdmin`` methods will be
- removed.
- * The ``enclosure`` keyword argument to ``SyndicationFeed.add_item()`` will be
- removed.
- * The ``django.template.loader.LoaderOrigin`` and
- ``django.template.base.StringOrigin`` aliases for
- ``django.template.base.Origin`` will be removed.
- See the :ref:`Django 1.10 release notes <deprecated-features-1.10>` for more
- details on these changes.
- * The ``makemigrations --exit`` option will be removed.
- * Support for direct assignment to a reverse foreign key or many-to-many
- relation will be removed.
- * The ``get_srid()`` and ``set_srid()`` methods of
- ``django.contrib.gis.geos.GEOSGeometry`` will be removed.
- * The ``get_x()``, ``set_x()``, ``get_y()``, ``set_y()``, ``get_z()``, and
- ``set_z()`` methods of ``django.contrib.gis.geos.Point`` will be removed.
- * The ``get_coords()`` and ``set_coords()`` methods of
- ``django.contrib.gis.geos.Point`` will be removed.
- * The ``cascaded_union`` property of ``django.contrib.gis.geos.MultiPolygon``
- will be removed.
- * ``django.utils.functional.allow_lazy()`` will be removed.
- * The ``shell --plain`` option will be removed.
- * The ``django.core.urlresolvers`` module will be removed.
- * The model ``CommaSeparatedIntegerField`` will be removed. A stub field will
- remain for compatibility with historical migrations.
- * Support for the template ``Context.has_key()`` method will be removed.
- * Support for the ``django.core.files.storage.Storage.accessed_time()``,
- ``created_time()``, and ``modified_time()`` methods will be removed.
- * Support for query lookups using the model name when
- ``Meta.default_related_name`` is set will be removed.
- * The ``__search`` query lookup and the
- ``DatabaseOperations.fulltext_search_sql()`` method will be removed.
- * The shim for supporting custom related manager classes without a
- ``_apply_rel_filters()`` method will be removed.
- * Using ``User.is_authenticated()`` and ``User.is_anonymous()`` as methods
- will no longer be supported.
- * The private attribute ``virtual_fields`` of ``Model._meta`` will be removed.
- * The private keyword arguments ``virtual_only`` in
- ``Field.contribute_to_class()`` and ``virtual`` in
- ``Model._meta.add_field()`` will be removed.
- * The ``javascript_catalog()`` and ``json_catalog()`` views will be removed.
- * The ``django.contrib.gis.utils.precision_wkt()`` function will be removed.
- * In multi-table inheritance, implicit promotion of a ``OneToOneField`` to a
- ``parent_link`` will be removed.
- * Support for ``Widget._format_value()`` will be removed.
- * ``FileField`` methods ``get_directory_name()`` and ``get_filename()`` will be
- removed.
- * The ``mark_for_escaping()`` function and the classes it uses: ``EscapeData``,
- ``EscapeBytes``, ``EscapeText``, ``EscapeString``, and ``EscapeUnicode`` will
- be removed.
- * The ``escape`` filter will change to use
- ``django.utils.html.conditional_escape()``.
- * ``Manager.use_for_related_fields`` will be removed.
- * Model ``Manager`` inheritance will follow MRO inheritance rules and the
- ``Meta.manager_inheritance_from_future`` to opt-in to this behavior will be
- removed.
- * Support for old-style middleware using ``settings.MIDDLEWARE_CLASSES`` will
- be removed.
- .. _deprecation-removed-in-1.10:
- 1.10
- ----
- See the :ref:`Django 1.8 release notes<deprecated-features-1.8>` for more
- details on these changes.
- * Support for calling a ``SQLCompiler`` directly as an alias for calling its
- ``quote_name_unless_alias`` method will be removed.
- * ``cycle`` and ``firstof`` template tags will be removed from the ``future``
- template tag library (used during the 1.6/1.7 deprecation period).
- * ``django.conf.urls.patterns()`` will be removed.
- * Support for the ``prefix`` argument to
- ``django.conf.urls.i18n.i18n_patterns()`` will be removed.
- * ``SimpleTestCase.urls`` will be removed.
- * Using an incorrect count of unpacked values in the ``for`` template tag
- will raise an exception rather than fail silently.
- * The ability to reverse URLs using a dotted Python path will be removed.
- * The ability to use a dotted Python path for the ``LOGIN_URL`` and
- ``LOGIN_REDIRECT_URL`` settings will be removed.
- * Support for :py:mod:`optparse` will be dropped for custom management commands
- (replaced by :py:mod:`argparse`).
- * The class ``django.core.management.NoArgsCommand`` will be removed. Use
- :class:`~django.core.management.BaseCommand` instead, which takes no arguments
- by default.
- * ``django.core.context_processors`` module will be removed.
- * ``django.db.models.sql.aggregates`` module will be removed.
- * ``django.contrib.gis.db.models.sql.aggregates`` module will be removed.
- * The following methods and properties of ``django.db.sql.query.Query`` will
- be removed:
- * Properties: ``aggregates`` and ``aggregate_select``
- * Methods: ``add_aggregate``, ``set_aggregate_mask``, and
- ``append_aggregate_mask``.
- * ``django.template.resolve_variable`` will be removed.
- * The following private APIs will be removed from
- :class:`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()``
- * The ``error_message`` argument of ``django.forms.RegexField`` will be removed.
- * The ``unordered_list`` filter will no longer support old style lists.
- * Support for string ``view`` arguments to ``url()`` will be removed.
- * The backward compatible shim to rename ``django.forms.Form._has_changed()``
- to ``has_changed()`` will be removed.
- * The ``removetags`` template filter will be removed.
- * The ``remove_tags()`` and ``strip_entities()`` functions in
- ``django.utils.html`` will be removed.
- * The ``is_admin_site`` argument to
- ``django.contrib.auth.views.password_reset()`` will be removed.
- * ``django.db.models.field.subclassing.SubfieldBase`` will be removed.
- * ``django.utils.checksums`` will be removed; its functionality is included
- in ``django-localflavor`` 1.1+.
- * The ``original_content_type_id`` attribute on
- ``django.contrib.admin.helpers.InlineAdminForm`` will be removed.
- * The backwards compatibility shim to allow ``FormMixin.get_form()`` to be
- defined with no default value for its ``form_class`` argument will be removed.
- * The following settings will be removed:
- * ``ALLOWED_INCLUDE_ROOTS``
- * ``TEMPLATE_CONTEXT_PROCESSORS``
- * ``TEMPLATE_DEBUG``
- * ``TEMPLATE_DIRS``
- * ``TEMPLATE_LOADERS``
- * ``TEMPLATE_STRING_IF_INVALID``
- * The backwards compatibility alias ``django.template.loader.BaseLoader`` will
- be removed.
- * Django template objects returned by
- :func:`~django.template.loader.get_template` and
- :func:`~django.template.loader.select_template` won't accept a
- :class:`~django.template.Context` in their
- :meth:`~django.template.backends.base.Template.render()` method anymore.
- * :doc:`Template response APIs </ref/template-response>` will enforce the use
- of :class:`dict` and backend-dependent template objects instead of
- :class:`~django.template.Context` and :class:`~django.template.Template`
- respectively.
- * The ``current_app`` parameter for the following function and classes will be
- removed:
- * ``django.shortcuts.render()``
- * ``django.template.Context()``
- * ``django.template.RequestContext()``
- * ``django.template.response.TemplateResponse()``
- * The ``dictionary`` and ``context_instance`` parameters for the following
- functions will be removed:
- * ``django.shortcuts.render()``
- * ``django.shortcuts.render_to_response()``
- * ``django.template.loader.render_to_string()``
- * The ``dirs`` parameter for the following functions will be removed:
- * ``django.template.loader.get_template()``
- * ``django.template.loader.select_template()``
- * ``django.shortcuts.render()``
- * ``django.shortcuts.render_to_response()``
- * Session verification will be enabled regardless of whether or not
- ``'django.contrib.auth.middleware.SessionAuthenticationMiddleware'`` is in
- ``MIDDLEWARE_CLASSES``.
- * Private attribute ``django.db.models.Field.related`` will be removed.
- * The ``--list`` option of the ``migrate`` management command will be removed.
- * The ``ssi`` template tag will be removed.
- * Support for the ``=`` comparison operator in the ``if`` template tag will be
- removed.
- * The backwards compatibility shims to allow ``Storage.get_available_name()``
- and ``Storage.save()`` to be defined without a ``max_length`` argument will
- be removed.
- * Support for the legacy ``%(<foo>)s`` syntax in ``ModelFormMixin.success_url``
- will be removed.
- * ``GeoQuerySet`` aggregate methods ``collect()``, ``extent()``, ``extent3d()``,
- ``make_line()``, and ``unionagg()`` will be removed.
- * Ability to specify ``ContentType.name`` when creating a content type instance
- will be removed.
- * Support for the old signature of ``allow_migrate`` will be removed. It changed
- from ``allow_migrate(self, db, model)`` to
- ``allow_migrate(self, db, app_label, model_name=None, **hints)``.
- * Support for the syntax of ``{% cycle %}`` that uses comma-separated arguments
- will be removed.
- * The warning that :class:`~django.core.signing.Signer` issues when given an
- invalid separator will become an exception.
- .. _deprecation-removed-in-1.9:
- 1.9
- ---
- See the :ref:`Django 1.7 release notes<deprecated-features-1.7>` for more
- details on these changes.
- * ``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``.
- * Automatic syncing of apps without migrations will be removed. Migrations will
- become compulsory for all apps unless you pass the ``--run-syncdb`` option to
- ``migrate``.
- * The SQL management commands for apps without migrations, ``sql``, ``sqlall``,
- ``sqlclear``, ``sqldropindexes``, and ``sqlindexes``, will be removed.
- * Support for automatic loading of ``initial_data`` fixtures and initial SQL
- data will be removed.
- * 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.
- * The model and form ``IPAddressField`` will be removed. A stub field will
- remain for compatibility with historical migrations.
- * ``AppCommand.handle_app()`` will no longer be supported.
- * ``RequestSite`` and ``get_current_site()`` will no longer be importable from
- ``django.contrib.sites.models``.
- * 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.
- * The backward compatibility shim introduced to rename the
- ``BaseMemcachedCache._get_memcache_timeout()`` method to
- ``get_backend_timeout()`` will be removed.
- * The ``--natural`` and ``-n`` options for :djadmin:`dumpdata` will be removed.
- * The ``use_natural_keys`` argument for ``serializers.serialize()`` will be
- removed.
- * Private API ``django.forms.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.
- * The ``ModelAdmin.validator_class`` and ``default_validator_class`` attributes
- will be removed.
- * ``ModelAdmin.validate()`` will be removed.
- * ``django.db.backends.DatabaseValidation.validate_field`` will be removed in
- favor of the ``check_field`` method.
- * The ``validate`` management command will be removed.
- * ``django.utils.module_loading.import_by_path`` will be removed in favor of
- ``django.utils.module_loading.import_string``.
- * ``ssi`` and ``url`` template tags will be removed from the ``future`` template
- tag library (used during the 1.3/1.4 deprecation period).
- * ``django.utils.text.javascript_quote`` will be removed.
- * Database test settings as independent entries in the database settings,
- prefixed by ``TEST_``, will no longer be supported.
- * The ``cache_choices`` option to :class:`~django.forms.ModelChoiceField` and
- :class:`~django.forms.ModelMultipleChoiceField` will be removed.
- * The default value of the
- :attr:`RedirectView.permanent <django.views.generic.base.RedirectView.permanent>`
- attribute will change from ``True`` to ``False``.
- * ``django.contrib.sitemaps.FlatPageSitemap`` will be removed in favor of
- ``django.contrib.flatpages.sitemaps.FlatPageSitemap``.
- * Private API ``django.test.utils.TestTemplateLoader`` will be removed.
- * The ``django.contrib.contenttypes.generic`` module will be removed.
- * Private APIs ``django.db.models.sql.where.WhereNode.make_atom()`` and
- ``django.db.models.sql.where.Constraint`` will be removed.
- .. _deprecation-removed-in-1.8:
- 1.8
- ---
- See the :ref:`Django 1.6 release notes<deprecated-features-1.6>` for more
- details on these changes.
- * ``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.
- * 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 ``MIDDLEWARE_CLASSES`` setting instead.
- * ``django.middleware.doc.XViewMiddleware`` will be removed. Use
- ``django.contrib.admindocs.middleware.XViewMiddleware`` 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.
- * 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``).
- * ``django.utils.html.fix_ampersands``, the ``fix_ampersands`` template filter and
- ``django.utils.html.clean_html`` will be removed following an accelerated deprecation.
- .. _deprecation-removed-in-1.7:
- 1.7
- ---
- See the :ref:`Django 1.5 release notes<deprecated-features-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
- ``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 ``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
- ``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.
- * The ``django.utils.encoding.StrAndUnicode`` mix-in will be removed.
- .. _deprecation-removed-in-1.6:
- 1.6
- ---
- See the :ref:`Django 1.4 release notes<deprecated-features-1.4>` for more
- details on these changes.
- * ``django.contrib.databrowse`` will be removed.
- * ``django.contrib.localflavor`` will be removed following an accelerated
- deprecation.
- * ``django.contrib.markup`` will be removed following an accelerated
- deprecation.
- * The compatibility modules ``django.utils.copycompat`` and
- ``django.utils.hashcompat`` as well as the functions
- ``django.utils.itercompat.all`` and ``django.utils.itercompat.any`` will
- be removed. The Python builtin versions should be used instead.
- * The ``csrf_response_exempt`` and ``csrf_view_exempt`` decorators will
- be removed. Since 1.4 ``csrf_response_exempt`` has been a no-op (it
- returns the same function), and ``csrf_view_exempt`` has been a
- synonym for ``django.views.decorators.csrf.csrf_exempt``, which should
- be used to replace it.
- * The ``django.core.cache.backends.memcached.CacheClass`` backend
- was split into two in Django 1.3 in order to introduce support for
- PyLibMC. The historical ``CacheClass`` will be removed in favor of
- ``django.core.cache.backends.memcached.MemcachedCache``.
- * The UK-prefixed objects of ``django.contrib.localflavor.uk`` will only
- be accessible through their GB-prefixed names (GB is the correct
- ISO 3166 code for United Kingdom).
- * The ``IGNORABLE_404_STARTS`` and ``IGNORABLE_404_ENDS`` settings have been
- superseded by :setting:`IGNORABLE_404_URLS` in the 1.4 release. They will be
- removed.
- * The form wizard has been refactored to use class-based views with pluggable
- backends in 1.4. The previous implementation will be removed.
- * Legacy ways of calling
- :func:`~django.views.decorators.cache.cache_page` will be removed.
- * The backward-compatibility shim to automatically add a debug-false
- filter to the ``'mail_admins'`` logging handler will be removed. The
- :setting:`LOGGING` setting should include this filter explicitly if
- it is desired.
- * The builtin truncation functions ``django.utils.text.truncate_words()``
- and ``django.utils.text.truncate_html_words()`` will be removed in
- favor of the ``django.utils.text.Truncator`` class.
- * The ``django.contrib.gis.geoip.GeoIP`` class was moved to
- ``django.contrib.gis.geoip`` in 1.4 -- the shortcut in
- ``django.contrib.gis.utils`` will be removed.
- * ``django.conf.urls.defaults`` will be removed. The functions
- ``include()``, ``patterns()``, and ``url()``, plus
- :data:`~django.conf.urls.handler404` and :data:`~django.conf.urls.handler500`
- are now available through ``django.conf.urls``.
- * The functions ``setup_environ()`` and ``execute_manager()`` will be removed
- from :mod:`django.core.management`. This also means that the old (pre-1.4)
- style of :file:`manage.py` file will no longer work.
- * Setting the ``is_safe`` and ``needs_autoescape`` flags as attributes of
- template filter functions will no longer be supported.
- * The attribute ``HttpRequest.raw_post_data`` was renamed to ``HttpRequest.body``
- in 1.4. The backward compatibility will be removed --
- ``HttpRequest.raw_post_data`` will no longer work.
- * The value for the ``post_url_continue`` parameter in
- ``ModelAdmin.response_add()`` will have to be either ``None`` (to redirect
- to the newly created object's edit page) or a pre-formatted url. String
- formats, such as the previous default ``'../%s/'``, will not be accepted any
- more.
- .. _deprecation-removed-in-1.5:
- 1.5
- ---
- See the :ref:`Django 1.3 release notes<deprecated-features-1.3>` for more
- details on these changes.
- * Starting Django without a :setting:`SECRET_KEY` will result in an exception
- rather than a ``DeprecationWarning``. (This is accelerated from the usual
- deprecation path; see the :doc:`Django 1.4 release notes</releases/1.4>`.)
- * The ``mod_python`` request handler will be removed. The ``mod_wsgi``
- handler should be used instead.
- * The ``template`` attribute on ``django.test.client.Response``
- objects returned by the :ref:`test client <test-client>` will be removed.
- The :attr:`~django.test.Response.templates` attribute should be
- used instead.
- * The ``django.test.simple.DjangoTestRunner`` will be removed.
- Instead use a ``unittest``-native class. The features of the
- ``django.test.simple.DjangoTestRunner`` (including fail-fast and
- Ctrl-C test termination) can be provided by :class:`unittest.TextTestRunner`.
- * The undocumented function
- ``django.contrib.formtools.utils.security_hash`` will be removed,
- instead use ``django.contrib.formtools.utils.form_hmac``
- * The function-based generic view modules will be removed in favor of their
- class-based equivalents, outlined :doc:`here
- </topics/class-based-views/index>`.
- * The ``django.core.servers.basehttp.AdminMediaHandler`` will be
- removed. In its place use
- ``django.contrib.staticfiles.handlers.StaticFilesHandler``.
- * The template tags library ``adminmedia`` and the template tag ``{%
- admin_media_prefix %}`` will be removed in favor of the generic static files
- handling. (This is faster than the usual deprecation path; see the
- :doc:`Django 1.4 release notes</releases/1.4>`.)
- * The ``url`` and ``ssi`` template tags will be modified so that the first
- argument to each tag is a template variable, not an implied string. In 1.4,
- this behavior is provided by a version of the tag in the ``future`` template
- tag library.
- * The ``reset`` and ``sqlreset`` management commands will be removed.
- * Authentication backends will need to support an inactive user
- being passed to all methods dealing with permissions.
- The ``supports_inactive_user`` attribute will no longer be checked
- and can be removed from custom backends.
- * :meth:`~django.contrib.gis.geos.GEOSGeometry.transform` will raise
- a :class:`~django.contrib.gis.geos.GEOSException` when called
- on a geometry with no SRID value.
- * ``django.http.CompatCookie`` will be removed in favor of
- ``django.http.SimpleCookie``.
- * ``django.core.context_processors.PermWrapper`` and
- ``django.core.context_processors.PermLookupDict`` will be removed in
- favor of the corresponding
- ``django.contrib.auth.context_processors.PermWrapper`` and
- ``django.contrib.auth.context_processors.PermLookupDict``, respectively.
- * The :setting:`MEDIA_URL` or :setting:`STATIC_URL` settings will be
- required to end with a trailing slash to ensure there is a consistent
- way to combine paths in templates.
- * ``django.db.models.fields.URLField.verify_exists`` will be removed. The
- feature was deprecated in 1.3.1 due to intractable security and
- performance issues and will follow a slightly accelerated deprecation
- timeframe.
- * Translations located under the so-called *project path* will be ignored during
- the translation building process performed at runtime. The
- :setting:`LOCALE_PATHS` setting can be used for the same task by including the
- filesystem path to a ``locale`` directory containing non-app-specific
- translations in its value.
- * The Markup contrib app will no longer support versions of Python-Markdown
- library earlier than 2.1. An accelerated timeline was used as this was
- a security related deprecation.
- * The ``CACHE_BACKEND`` setting will be removed. The cache backend(s) should be
- specified in the :setting:`CACHES` setting.
- .. _deprecation-removed-in-1.4:
- 1.4
- ---
- See the :ref:`Django 1.2 release notes<deprecated-features-1.2>` for more
- details on these changes.
- * ``CsrfResponseMiddleware`` and ``CsrfMiddleware`` will be removed. Use
- the ``{% csrf_token %}`` template tag inside forms to enable CSRF
- protection. ``CsrfViewMiddleware`` remains and is enabled by default.
- * The old imports for CSRF functionality (``django.contrib.csrf.*``),
- which moved to core in 1.2, will be removed.
- * The ``django.contrib.gis.db.backend`` module will be removed in favor
- of the specific backends.
- * ``SMTPConnection`` will be removed in favor of a generic email 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 will have to support multiple databases.
- * 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()``), will be removed. The
- :doc:`messages framework </ref/contrib/messages>` should be used
- instead. The related ``messages`` variable returned by the
- auth context processor will also be removed. Note that this
- means that the admin application will depend on the messages
- context processor.
- * Authentication backends will need to support the ``obj`` parameter for
- permission checking. The ``supports_object_permissions`` attribute
- will no longer be checked and can be removed from custom backends.
- * Authentication backends will need to support the ``AnonymousUser`` class
- being passed to all methods dealing with permissions. The
- ``supports_anonymous_user`` variable will no longer be checked and can be
- removed from custom backends.
- * 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.
- * ``django.utils.translation.get_date_formats()`` and
- ``django.utils.translation.get_partial_date_formats()``. These functions
- will be removed; use the locale-aware
- ``django.utils.formats.get_format()`` to get the appropriate formats.
- * In ``django.forms.fields``, the constants: ``DEFAULT_DATE_INPUT_FORMATS``,
- ``DEFAULT_TIME_INPUT_FORMATS`` and
- ``DEFAULT_DATETIME_INPUT_FORMATS`` will be removed. Use
- ``django.utils.formats.get_format()`` to get the appropriate
- formats.
- * The ability to use a function-based test runner 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`` will be removed. 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``.
- * The ``postgresql`` database backend will be removed, use the
- ``postgresql_psycopg2`` backend instead.
- * The ``no`` language code will be removed and has been replaced by the
- ``nb`` language code.
- * Authentication backends will need to define the boolean attribute
- ``supports_inactive_user`` until version 1.5 when it will be assumed that
- all backends will handle inactive users.
- * ``django.db.models.fields.XMLField`` will be removed. This was
- deprecated as part of the 1.3 release. An accelerated deprecation
- schedule has been used because the field hasn't performed any role
- beyond that of a simple ``TextField`` since the removal of ``oldforms``.
- All uses of ``XMLField`` can be replaced with ``TextField``.
- * The undocumented ``mixin`` parameter to the ``open()`` method of
- ``django.core.files.storage.Storage`` (and subclasses) will be removed.
- .. _deprecation-removed-in-1.3:
- 1.3
- ---
- See the :ref:`Django 1.1 release notes<deprecated-features-1.1>` for more
- details on these changes.
- * ``AdminSite.root()``. This method of hooking up the admin URLs will be
- removed in favor of including ``admin.site.urls``.
- * Authentication backends need to define the boolean attributes
- ``supports_object_permissions`` and ``supports_anonymous_user`` until
- version 1.4, at which point it will be assumed that all backends will
- support these options.
|