2017-09-02 23:08:23 +00:00
|
|
|
============================================
|
|
|
|
Django 2.1 release notes - UNDER DEVELOPMENT
|
|
|
|
============================================
|
|
|
|
|
|
|
|
Welcome to Django 2.1!
|
|
|
|
|
|
|
|
These release notes cover the :ref:`new features <whats-new-2.1>`, as well as
|
|
|
|
some :ref:`backwards incompatible changes <backwards-incompatible-2.1>` you'll
|
|
|
|
want to be aware of when upgrading from Django 2.0 or earlier. We've
|
|
|
|
:ref:`dropped some features<removed-features-2.1>` that have reached the end of
|
|
|
|
their deprecation cycle, and we've :ref:`begun the deprecation process for some
|
|
|
|
features <deprecated-features-2.1>`.
|
|
|
|
|
|
|
|
See the :doc:`/howto/upgrade-version` guide if you're updating an existing
|
|
|
|
project.
|
|
|
|
|
|
|
|
Python compatibility
|
|
|
|
====================
|
|
|
|
|
|
|
|
Django 2.1 supports Python 3.5, 3.6, and 3.7. Django 2.0 is the last version to
|
|
|
|
support Python 3.4. We **highly recommend** and only officially support the
|
|
|
|
latest release of each series.
|
|
|
|
|
|
|
|
.. _whats-new-2.1:
|
|
|
|
|
|
|
|
What's new in Django 2.1
|
|
|
|
========================
|
|
|
|
|
|
|
|
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
|
|
|
|
~~~~~~
|
|
|
|
|
2017-10-14 01:29:00 +00:00
|
|
|
* Models can now use ``__init_subclass__()`` from :pep:`487`.
|
2017-09-02 23:08:23 +00:00
|
|
|
|
|
|
|
Requests and Responses
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Serialization
|
|
|
|
~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Signals
|
|
|
|
~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Templates
|
|
|
|
~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Tests
|
|
|
|
~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
URLs
|
|
|
|
~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Validators
|
|
|
|
~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
.. _backwards-incompatible-2.1:
|
|
|
|
|
|
|
|
Backwards incompatible changes in 2.1
|
|
|
|
=====================================
|
|
|
|
|
|
|
|
Database backend API
|
|
|
|
--------------------
|
|
|
|
|
2017-10-06 16:47:08 +00:00
|
|
|
* To adhere to :pep:`249`, exceptions where a database doesn't support a
|
|
|
|
feature are changed from :exc:`NotImplementedError` to
|
|
|
|
:exc:`django.db.NotSupportedError`.
|
2017-09-02 23:08:23 +00:00
|
|
|
|
2017-09-30 18:13:18 +00:00
|
|
|
:mod:`django.contrib.gis`
|
|
|
|
-------------------------
|
|
|
|
|
|
|
|
* Support for SpatiaLite 4.0 is removed.
|
|
|
|
|
2017-08-24 18:56:09 +00:00
|
|
|
Dropped support for MySQL 5.5
|
|
|
|
-----------------------------
|
|
|
|
|
|
|
|
The end of upstream support for MySQL 5.5 is December 2018. Django 2.1 supports
|
|
|
|
MySQL 5.6 and higher.
|
|
|
|
|
2017-09-06 14:26:45 +00:00
|
|
|
Dropped support for PostgreSQL 9.3
|
|
|
|
----------------------------------
|
|
|
|
|
|
|
|
The end of upstream support for PostgreSQL 9.3 is September 2018. Django 2.1
|
|
|
|
supports PostgreSQL 9.4 and higher.
|
|
|
|
|
2017-09-02 23:08:23 +00:00
|
|
|
Miscellaneous
|
|
|
|
-------------
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
.. _deprecated-features-2.1:
|
|
|
|
|
|
|
|
Features deprecated in 2.1
|
|
|
|
==========================
|
|
|
|
|
|
|
|
Miscellaneous
|
|
|
|
-------------
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
.. _removed-features-2.1:
|
|
|
|
|
|
|
|
Features removed in 2.1
|
|
|
|
=======================
|
|
|
|
|
|
|
|
These features have reached the end of their deprecation cycle and are removed
|
|
|
|
in Django 2.1. See :ref:`deprecated-features-1.11` for details, including how
|
|
|
|
to remove usage of these features.
|
2017-09-02 23:24:18 +00:00
|
|
|
in Django 2.1. See :ref:`deprecated-features-1.11` and for details, including
|
|
|
|
how to remove usage of these features.
|
|
|
|
|
|
|
|
* ``contrib.auth.views.login()``, ``logout()``, ``password_change()``,
|
|
|
|
``password_change_done()``, ``password_reset()``, ``password_reset_done()``,
|
|
|
|
``password_reset_confirm()``, and ``password_reset_complete()`` are removed.
|
2017-09-02 23:45:09 +00:00
|
|
|
|
|
|
|
* The ``extra_context`` parameter of ``contrib.auth.views.logout_then_login()``
|
|
|
|
is removed.
|
2017-09-02 23:48:50 +00:00
|
|
|
|
|
|
|
* ``django.test.runner.setup_databases()`` is removed.
|
2017-09-02 23:54:21 +00:00
|
|
|
|
|
|
|
* ``django.utils.translation.string_concat()`` is removed.
|
2017-09-02 23:59:45 +00:00
|
|
|
|
|
|
|
* ``django.core.cache.backends.memcached.PyLibMCCache`` no longer supports
|
|
|
|
passing ``pylibmc`` behavior settings as top-level attributes of ``OPTIONS``.
|
2017-09-03 00:12:27 +00:00
|
|
|
|
|
|
|
* The ``host`` parameter of ``django.utils.http.is_safe_url()`` is removed.
|
2017-09-03 00:24:01 +00:00
|
|
|
|
|
|
|
* Silencing of exceptions raised while rendering the ``{% include %}`` template
|
|
|
|
tag is removed.
|
2017-09-03 00:28:48 +00:00
|
|
|
|
|
|
|
* ``DatabaseIntrospection.get_indexes()`` is removed.
|
2017-09-03 00:40:47 +00:00
|
|
|
|
|
|
|
* The ``authenticate()`` method of authentication backends requires ``request``
|
|
|
|
as the first positional argument.
|
2017-09-03 00:47:47 +00:00
|
|
|
|
|
|
|
* The ``django.db.models.permalink()`` decorator is removed.
|
2017-09-03 01:09:22 +00:00
|
|
|
|
|
|
|
* The ``USE_ETAGS`` setting is removed. ``CommonMiddleware`` and
|
|
|
|
``django.utils.cache.patch_response_headers()`` no longer set ETags.
|
2017-09-03 01:11:12 +00:00
|
|
|
|
|
|
|
* The ``Model._meta.has_auto_field`` attribute is removed.
|
2017-09-03 01:16:09 +00:00
|
|
|
|
|
|
|
* Support for regular expression groups with ``iLmsu#`` in ``url()`` is removed.
|
2017-09-03 01:21:40 +00:00
|
|
|
|
|
|
|
* Support for ``Widget.render()`` methods without the ``renderer`` argument
|
|
|
|
is removed.
|