2016-11-08 04:03:37 +08:00
|
|
|
============================================
|
|
|
|
Django 2.0 release notes - UNDER DEVELOPMENT
|
|
|
|
============================================
|
|
|
|
|
|
|
|
Welcome to Django 2.0!
|
|
|
|
|
|
|
|
These release notes cover the :ref:`new features <whats-new-2.0>`, as well as
|
|
|
|
some :ref:`backwards incompatible changes <backwards-incompatible-2.0>` you'll
|
|
|
|
want to be aware of when upgrading from Django 1.11 or earlier. We've
|
|
|
|
:ref:`dropped some features<removed-features-2.0>` that have reached the end of
|
|
|
|
their deprecation cycle, and we've :ref:`begun the deprecation process for some
|
|
|
|
features <deprecated-features-2.0>`.
|
|
|
|
|
|
|
|
See the :doc:`/howto/upgrade-version` guide if you're updating an existing
|
|
|
|
project.
|
|
|
|
|
|
|
|
Python compatibility
|
|
|
|
====================
|
|
|
|
|
|
|
|
Django 2.0 supports Python 3.5+. Since Django 1.11, support for Python 2.7 and
|
|
|
|
3.4 is removed. We **highly recommend** and only officially support the latest
|
|
|
|
release of each series.
|
|
|
|
|
|
|
|
Third-party library support for older version of Django
|
|
|
|
=======================================================
|
|
|
|
|
|
|
|
Following the release of Django 2.0, we suggest that third-party app authors
|
|
|
|
drop support for all versions of Django prior to 1.11. At that time, you should
|
|
|
|
be able run your package's tests using ``python -Wd`` so that deprecation
|
|
|
|
warnings do appear. After making the deprecation warning fixes, your app should
|
|
|
|
be compatible with Django 2.0.
|
|
|
|
|
|
|
|
.. _whats-new-2.0:
|
|
|
|
|
|
|
|
What's new in Django 2.0
|
|
|
|
========================
|
|
|
|
|
|
|
|
Minor features
|
|
|
|
--------------
|
|
|
|
|
|
|
|
:mod:`django.contrib.admin`
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
:mod:`django.contrib.admindocs`
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
:mod:`django.contrib.auth`
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
:mod:`django.contrib.contenttypes`
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
:mod:`django.contrib.gis`
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
:mod:`django.contrib.messages`
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
:mod:`django.contrib.postgres`
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
:mod:`django.contrib.redirects`
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
:mod:`django.contrib.sessions`
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
:mod:`django.contrib.sitemaps`
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
:mod:`django.contrib.sites`
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
:mod:`django.contrib.staticfiles`
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
:mod:`django.contrib.syndication`
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Cache
|
|
|
|
~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
CSRF
|
|
|
|
~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Database backends
|
|
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Email
|
|
|
|
~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
File Storage
|
|
|
|
~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
File Uploads
|
|
|
|
~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
|
|
|
|
Forms
|
|
|
|
~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Generic Views
|
|
|
|
~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Internationalization
|
|
|
|
~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Management Commands
|
|
|
|
~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Migrations
|
|
|
|
~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Models
|
|
|
|
~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Requests and Responses
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Serialization
|
|
|
|
~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Signals
|
|
|
|
~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Templates
|
|
|
|
~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Tests
|
|
|
|
~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
URLs
|
|
|
|
~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Validators
|
|
|
|
~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
.. _backwards-incompatible-2.0:
|
|
|
|
|
|
|
|
Backwards incompatible changes in 2.0
|
|
|
|
=====================================
|
|
|
|
|
|
|
|
Database backend API
|
|
|
|
--------------------
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Miscellaneous
|
|
|
|
-------------
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
.. _deprecated-features-2.0:
|
|
|
|
|
|
|
|
Features deprecated in 2.0
|
|
|
|
==========================
|
|
|
|
|
|
|
|
Miscellaneous
|
|
|
|
-------------
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
.. _removed-features-2.0:
|
|
|
|
|
|
|
|
Features removed in 2.0
|
|
|
|
=======================
|
|
|
|
|
|
|
|
These features have reached the end of their deprecation cycle and are removed
|
|
|
|
in Django 2.0. See :ref:`deprecated-features-1.9` and
|
|
|
|
:ref:`deprecated-features-1.10` for details, including how to remove usage of
|
|
|
|
these features.
|
2016-11-07 22:46:42 +08:00
|
|
|
|
|
|
|
* The ``weak`` argument to ``django.dispatch.signals.Signal.disconnect()`` is
|
|
|
|
removed.
|
2017-01-01 03:11:52 +08:00
|
|
|
|
|
|
|
* ``django.db.backends.base.BaseDatabaseOperations.check_aggregate_support()``
|
|
|
|
is removed.
|
2016-11-08 05:28:13 +08:00
|
|
|
|
|
|
|
* The ``django.forms.extras`` package is removed.
|
2016-11-08 07:19:34 +08:00
|
|
|
|
|
|
|
* The ``assignment_tag`` helper is removed.
|
2016-12-17 07:13:34 +08:00
|
|
|
|
|
|
|
* The ``host`` argument to ``SimpleTestCase.assertsRedirects()`` is removed.
|
|
|
|
The compatibility layer which allows absolute URLs to be considered equal to
|
|
|
|
relative ones when the path is identical is also removed.
|
2016-12-17 07:19:52 +08:00
|
|
|
|
|
|
|
* ``Field.rel`` and ``Field.remote_field.to`` are removed.
|
2016-12-31 06:50:05 +08:00
|
|
|
|
|
|
|
* The ``on_delete`` argument for ``ForeignKey`` and ``OneToOneField`` are now
|
|
|
|
required.
|
2016-12-31 06:55:03 +08:00
|
|
|
|
|
|
|
* ``django.db.models.fields.add_lazy_relation()`` is removed.
|
2016-12-31 07:04:09 +08:00
|
|
|
|
|
|
|
* When time zone support is enabled, database backends that don't support time
|
|
|
|
zones no longer 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()``.
|
2016-12-31 07:10:04 +08:00
|
|
|
|
|
|
|
* ``django.contrib.auth.tests.utils.skipIfCustomUser()`` is removed.
|
2016-11-07 20:00:40 +08:00
|
|
|
|
|
|
|
* The ``GeoManager`` and ``GeoQuerySet`` classes are removed.
|
2016-12-31 07:56:34 +08:00
|
|
|
|
|
|
|
* The ``django.contrib.gis.geoip`` module is removed.
|
2016-12-31 09:09:26 +08:00
|
|
|
|
|
|
|
* The ``supports_recursion`` check for template loaders is 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
|
|
|
|
are removed.
|
|
|
|
|
|
|
|
* The ``template_dirs`` argument for template loaders is 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()``
|
|
|
|
|
|
|
|
* ``django.template.loaders.base.Loader.__call__()`` is removed.
|
2016-12-31 20:05:37 +08:00
|
|
|
|
|
|
|
* Support for custom error views that don't accept an ``exception`` parameter
|
|
|
|
is removed.
|
2016-12-31 20:10:04 +08:00
|
|
|
|
|
|
|
* The ``mime_type`` attribute of ``django.utils.feedgenerator.Atom1Feed`` and
|
|
|
|
``django.utils.feedgenerator.RssFeed`` is removed.
|
2017-01-10 22:57:49 +08:00
|
|
|
|
|
|
|
* The ``app_name`` argument to ``include()`` is removed.
|
|
|
|
|
|
|
|
* Support for passing a 3-tuple as the first argument to ``include()`` is
|
|
|
|
removed.
|
|
|
|
|
|
|
|
* Support for setting a URL instance namespace without an application namespace
|
|
|
|
is removed.
|
2016-12-31 20:36:21 +08:00
|
|
|
|
|
|
|
* ``Field._get_val_from_obj()`` is removed.
|
2016-12-31 20:41:35 +08:00
|
|
|
|
|
|
|
* ``django.template.loaders.eggs.Loader`` is removed.
|
2016-12-31 21:05:01 +08:00
|
|
|
|
|
|
|
* The ``current_app`` parameter to the ``contrib.auth`` function-based views is
|
|
|
|
removed.
|
2016-12-31 21:10:37 +08:00
|
|
|
|
|
|
|
* The ``callable_obj`` keyword argument to
|
|
|
|
``SimpleTestCase.assertRaisesMessage()`` is removed.
|
2016-12-31 21:26:23 +08:00
|
|
|
|
|
|
|
* Support for the ``allow_tags`` attribute on ``ModelAdmin`` methods is
|
|
|
|
removed.
|
2016-12-31 21:27:32 +08:00
|
|
|
|
|
|
|
* The ``enclosure`` keyword argument to ``SyndicationFeed.add_item()`` is
|
|
|
|
removed.
|
2016-12-31 21:35:39 +08:00
|
|
|
|
|
|
|
* The ``django.template.loader.LoaderOrigin`` and
|
|
|
|
``django.template.base.StringOrigin`` aliases for
|
|
|
|
``django.template.base.Origin`` are removed.
|
2016-12-31 21:52:42 +08:00
|
|
|
|
|
|
|
* The ``makemigrations --exit`` option is removed.
|
2016-12-31 22:04:09 +08:00
|
|
|
|
|
|
|
* Support for direct assignment to a reverse foreign key or many-to-many
|
|
|
|
relation is removed.
|
2016-12-31 22:33:40 +08:00
|
|
|
|
|
|
|
* The ``get_srid()`` and ``set_srid()`` methods of
|
|
|
|
``django.contrib.gis.geos.GEOSGeometry`` are removed.
|
2016-12-31 22:36:46 +08:00
|
|
|
|
|
|
|
* The ``get_x()``, ``set_x()``, ``get_y()``, ``set_y()``, ``get_z()``, and
|
|
|
|
``set_z()`` methods of ``django.contrib.gis.geos.Point`` are removed.
|
2016-12-31 22:42:27 +08:00
|
|
|
|
|
|
|
* The ``get_coords()`` and ``set_coords()`` methods of
|
|
|
|
``django.contrib.gis.geos.Point`` are removed.
|
2016-12-31 22:45:55 +08:00
|
|
|
|
|
|
|
* The ``cascaded_union`` property of ``django.contrib.gis.geos.MultiPolygon``
|
|
|
|
is removed.
|
2016-12-31 22:52:31 +08:00
|
|
|
|
|
|
|
* ``django.utils.functional.allow_lazy()`` is removed.
|
2016-12-31 22:56:26 +08:00
|
|
|
|
|
|
|
* The ``shell --plain`` option is removed.
|
2016-12-31 22:59:51 +08:00
|
|
|
|
|
|
|
* The ``django.core.urlresolvers`` module is removed.
|
2016-12-31 23:30:41 +08:00
|
|
|
|
|
|
|
* ``CommaSeparatedIntegerField`` is removed, except for support in historical
|
|
|
|
migrations.
|
2017-01-01 00:02:10 +08:00
|
|
|
|
|
|
|
* The template ``Context.has_key()`` method is removed.
|
2017-01-01 00:11:04 +08:00
|
|
|
|
|
|
|
* Support for the ``django.core.files.storage.Storage.accessed_time()``,
|
|
|
|
``created_time()``, and ``modified_time()`` methods is removed.
|
2017-01-01 00:24:40 +08:00
|
|
|
|
|
|
|
* Support for query lookups using the model name when
|
|
|
|
``Meta.default_related_name`` is set is removed.
|
2017-01-01 00:32:50 +08:00
|
|
|
|
|
|
|
* The MySQL ``__search`` lookup is removed.
|
2017-01-01 00:36:43 +08:00
|
|
|
|
|
|
|
* The shim for supporting custom related manager classes without a
|
|
|
|
``_apply_rel_filters()`` method is removed.
|
2017-01-01 00:46:40 +08:00
|
|
|
|
|
|
|
* Using ``User.is_authenticated()`` and ``User.is_anonymous()`` as methods
|
|
|
|
rather than properties is no longer be supported.
|
2017-01-01 00:54:49 +08:00
|
|
|
|
|
|
|
* The ``Model._meta.virtual_fields`` attribute is removed.
|
|
|
|
|
|
|
|
* The keyword arguments ``virtual_only`` in ``Field.contribute_to_class()`` and
|
|
|
|
``virtual`` in ``Model._meta.add_field()`` are removed.
|
2017-01-01 01:10:37 +08:00
|
|
|
|
|
|
|
* The ``javascript_catalog()`` and ``json_catalog()`` views are removed.
|
2017-01-01 01:13:00 +08:00
|
|
|
|
|
|
|
* ``django.contrib.gis.utils.precision_wkt()`` is removed.
|
2017-01-01 01:30:29 +08:00
|
|
|
|
|
|
|
* In multi-table inheritance, implicit promotion of a ``OneToOneField`` to a
|
|
|
|
``parent_link`` is removed.
|
2017-01-01 01:34:00 +08:00
|
|
|
|
|
|
|
* Support for ``Widget._format_value()`` is removed.
|
2017-01-01 01:36:25 +08:00
|
|
|
|
|
|
|
* ``FileField`` methods ``get_directory_name()`` and ``get_filename()`` are
|
|
|
|
removed.
|
2017-01-01 01:43:30 +08:00
|
|
|
|
|
|
|
* The ``mark_for_escaping()`` function and the classes it uses: ``EscapeData``,
|
|
|
|
``EscapeBytes``, ``EscapeText``, ``EscapeString``, and ``EscapeUnicode`` are
|
|
|
|
removed.
|
|
|
|
|
|
|
|
* The ``escape`` filter now uses ``django.utils.html.conditional_escape()``.
|
2017-01-01 02:07:35 +08:00
|
|
|
|
|
|
|
* ``Manager.use_for_related_fields`` is removed.
|
|
|
|
|
|
|
|
* Model ``Manager`` inheritance follows MRO inheritance rules. The requirement
|
|
|
|
to use ``Meta.manager_inheritance_from_future`` to opt-in to the behavior is
|
|
|
|
removed.
|
2017-01-01 02:24:00 +08:00
|
|
|
|
|
|
|
* Support for old-style middleware using ``settings.MIDDLEWARE_CLASSES`` is
|
|
|
|
removed.
|