2018-12-28 08:03:30 +08:00
|
|
|
============================================
|
|
|
|
Django 3.0 release notes - UNDER DEVELOPMENT
|
|
|
|
============================================
|
|
|
|
|
|
|
|
*Expected December 2019*
|
|
|
|
|
|
|
|
Welcome to Django 3.0!
|
|
|
|
|
|
|
|
These release notes cover the :ref:`new features <whats-new-3.0>`, as well as
|
|
|
|
some :ref:`backwards incompatible changes <backwards-incompatible-3.0>` you'll
|
|
|
|
want to be aware of when upgrading from Django 2.2 or earlier. We've
|
|
|
|
:ref:`dropped some features<removed-features-3.0>` that have reached the end of
|
|
|
|
their deprecation cycle, and we've :ref:`begun the deprecation process for
|
|
|
|
some features <deprecated-features-3.0>`.
|
|
|
|
|
|
|
|
See the :doc:`/howto/upgrade-version` guide if you're updating an existing
|
|
|
|
project.
|
|
|
|
|
|
|
|
Python compatibility
|
|
|
|
====================
|
|
|
|
|
|
|
|
Django 3.0 supports Python 3.6, 3.7, and 3.8. We **highly recommend** and only
|
|
|
|
officially support the latest release of each series.
|
|
|
|
|
|
|
|
The Django 2.2.x series is the last to support Python 3.5.
|
|
|
|
|
|
|
|
Third-party library support for older version of Django
|
|
|
|
=======================================================
|
|
|
|
|
|
|
|
Following the release of Django 3.0, we suggest that third-party app authors
|
|
|
|
drop support for all versions of Django prior to 2.2. At that time, you should
|
|
|
|
be able to run your package's tests using ``python -Wd`` so that deprecation
|
|
|
|
warnings appear. After making the deprecation warning fixes, your app should be
|
|
|
|
compatible with Django 3.0.
|
|
|
|
|
|
|
|
.. _whats-new-3.0:
|
|
|
|
|
|
|
|
What's new in Django 3.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
|
|
|
|
~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Email
|
|
|
|
~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
File Storage
|
|
|
|
~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
File Uploads
|
|
|
|
~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
|
|
|
|
Forms
|
|
|
|
~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Generic Views
|
|
|
|
~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Internationalization
|
|
|
|
~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Management Commands
|
|
|
|
~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
2019-01-28 03:35:17 +08:00
|
|
|
* The new :option:`compilemessages --ignore` option allows ignoring specific
|
|
|
|
directories when searching for ``.po`` files to compile.
|
2018-12-28 08:03:30 +08:00
|
|
|
|
|
|
|
Migrations
|
|
|
|
~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Models
|
|
|
|
~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Requests and Responses
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Serialization
|
|
|
|
~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Signals
|
|
|
|
~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Templates
|
|
|
|
~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Tests
|
|
|
|
~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
URLs
|
|
|
|
~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Validators
|
|
|
|
~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
.. _backwards-incompatible-3.0:
|
|
|
|
|
|
|
|
Backwards incompatible changes in 3.0
|
|
|
|
=====================================
|
|
|
|
|
|
|
|
Database backend API
|
|
|
|
--------------------
|
|
|
|
|
|
|
|
This section describes changes that may be needed in third-party database
|
|
|
|
backends.
|
|
|
|
|
2019-01-19 22:00:24 +08:00
|
|
|
* The second argument of ``DatabaseIntrospection.get_geometry_type()`` is now
|
|
|
|
the row description instead of the column name.
|
2018-12-28 08:03:30 +08:00
|
|
|
|
2019-01-19 21:35:51 +08:00
|
|
|
* ``DatabaseIntrospection.get_field_type()`` may no longer return tuples.
|
|
|
|
|
2018-12-28 08:03:30 +08:00
|
|
|
Miscellaneous
|
|
|
|
-------------
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
.. _deprecated-features-3.0:
|
|
|
|
|
|
|
|
Features deprecated in 3.0
|
|
|
|
==========================
|
|
|
|
|
|
|
|
Miscellaneous
|
|
|
|
-------------
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
.. _removed-features-3.0:
|
|
|
|
|
|
|
|
Features removed in 3.0
|
|
|
|
=======================
|
|
|
|
|
|
|
|
These features have reached the end of their deprecation cycle and are removed
|
|
|
|
in Django 3.0.
|
|
|
|
|
|
|
|
See :ref:`deprecated-features-2.0` for details on these changes, including how
|
|
|
|
to remove usage of these features.
|
|
|
|
|
2018-12-28 08:23:09 +08:00
|
|
|
* The ``django.db.backends.postgresql_psycopg2`` module is removed.
|
2018-12-28 08:03:30 +08:00
|
|
|
|
2018-12-28 08:23:09 +08:00
|
|
|
* ``django.shortcuts.render_to_response()`` is removed.
|
|
|
|
|
2018-12-28 08:49:03 +08:00
|
|
|
* The ``DEFAULT_CONTENT_TYPE`` setting is removed.
|
|
|
|
|
2018-12-28 08:58:22 +08:00
|
|
|
* ``HttpRequest.xreadlines()`` is removed.
|
|
|
|
|
2018-12-28 08:58:22 +08:00
|
|
|
* Support for the ``context`` argument of ``Field.from_db_value()`` and
|
|
|
|
``Expression.convert_value()`` is removed.
|
|
|
|
|
2018-12-28 09:18:45 +08:00
|
|
|
* The ``field_name`` keyword argument of ``QuerySet.earliest()` and
|
|
|
|
``latest()`` is removed.
|
|
|
|
|
2018-12-28 08:03:30 +08:00
|
|
|
See :ref:`deprecated-features-2.1` for details on these changes, including how
|
|
|
|
to remove usage of these features.
|
|
|
|
|
2018-12-28 09:31:55 +08:00
|
|
|
* The ``ForceRHR`` GIS function is removed.
|
2018-12-28 09:35:20 +08:00
|
|
|
|
|
|
|
* ``django.utils.http.cookie_date()`` is removed.
|
2018-12-28 09:41:54 +08:00
|
|
|
|
|
|
|
* The ``staticfiles`` and ``admin_static`` template tag libraries are removed.
|
|
|
|
|
|
|
|
* ``django.contrib.staticfiles.templatetags.staticfiles.static()`` is removed.
|