2.1.txt 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371
  1. ============================================
  2. Django 2.1 release notes - UNDER DEVELOPMENT
  3. ============================================
  4. Welcome to Django 2.1!
  5. These release notes cover the :ref:`new features <whats-new-2.1>`, as well as
  6. some :ref:`backwards incompatible changes <backwards-incompatible-2.1>` you'll
  7. want to be aware of when upgrading from Django 2.0 or earlier. We've
  8. :ref:`dropped some features<removed-features-2.1>` that have reached the end of
  9. their deprecation cycle, and we've :ref:`begun the deprecation process for some
  10. features <deprecated-features-2.1>`.
  11. See the :doc:`/howto/upgrade-version` guide if you're updating an existing
  12. project.
  13. Python compatibility
  14. ====================
  15. Django 2.1 supports Python 3.5, 3.6, and 3.7. Django 2.0 is the last version to
  16. support Python 3.4. We **highly recommend** and only officially support the
  17. latest release of each series.
  18. .. _whats-new-2.1:
  19. What's new in Django 2.1
  20. ========================
  21. Minor features
  22. --------------
  23. :mod:`django.contrib.admin`
  24. ~~~~~~~~~~~~~~~~~~~~~~~~~~~
  25. * :attr:`.ModelAdmin.search_fields` now accepts any lookup such as
  26. ``field__exact``.
  27. * jQuery is upgraded from version 2.2.3 to 3.2.1.
  28. * The new :meth:`.ModelAdmin.delete_queryset` method allows customizing the
  29. deletion process of the "delete selected objects" action.
  30. * You can now :ref:`override the the default admin site
  31. <overriding-default-admin-site>`.
  32. * The new :attr:`.ModelAdmin.sortable_by` attribute and
  33. :meth:`.ModelAdmin.get_sortable_by` method allow limiting the columns that
  34. can be sorted in the change list page.
  35. * The ``admin_order_field`` attribute for elements in
  36. :attr:`.ModelAdmin.list_display` may now be a query expression.
  37. :mod:`django.contrib.admindocs`
  38. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  39. * ...
  40. :mod:`django.contrib.auth`
  41. ~~~~~~~~~~~~~~~~~~~~~~~~~~
  42. * :djadmin:`createsuperuser` now gives a prompt to allow bypassing the
  43. :setting:`AUTH_PASSWORD_VALIDATORS` checks.
  44. * :class:`~django.contrib.auth.forms.UserCreationForm` and
  45. :class:`~django.contrib.auth.forms.UserChangeForm` no longer need to be
  46. rewritten for a custom user model.
  47. :mod:`django.contrib.contenttypes`
  48. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  49. * ...
  50. :mod:`django.contrib.gis`
  51. ~~~~~~~~~~~~~~~~~~~~~~~~~
  52. * The new :meth:`.GEOSGeometry.buffer_with_style` method is a version of
  53. :meth:`~.GEOSGeometry.buffer` that allows customizing the style of the
  54. buffer.
  55. :mod:`django.contrib.messages`
  56. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  57. * ...
  58. :mod:`django.contrib.postgres`
  59. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  60. * ...
  61. :mod:`django.contrib.redirects`
  62. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  63. * ...
  64. :mod:`django.contrib.sessions`
  65. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  66. * ...
  67. :mod:`django.contrib.sitemaps`
  68. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  69. * ...
  70. :mod:`django.contrib.sites`
  71. ~~~~~~~~~~~~~~~~~~~~~~~~~~~
  72. * ...
  73. :mod:`django.contrib.staticfiles`
  74. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  75. * ...
  76. :mod:`django.contrib.syndication`
  77. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  78. * ...
  79. Cache
  80. ~~~~~
  81. * The :ref:`local-memory cache backend <local-memory-caching>` now uses a
  82. least-recently-used (LRU) culling strategy rather than a pseudo-random one.
  83. CSRF
  84. ~~~~
  85. * ...
  86. Database backends
  87. ~~~~~~~~~~~~~~~~~
  88. * ...
  89. Email
  90. ~~~~~
  91. * ...
  92. File Storage
  93. ~~~~~~~~~~~~
  94. * ...
  95. File Uploads
  96. ~~~~~~~~~~~~
  97. * ...
  98. Forms
  99. ~~~~~
  100. * ...
  101. Generic Views
  102. ~~~~~~~~~~~~~
  103. * ...
  104. Internationalization
  105. ~~~~~~~~~~~~~~~~~~~~
  106. * Added the :meth:`~django.utils.translation.get_supported_language_variant`
  107. function.
  108. Management Commands
  109. ~~~~~~~~~~~~~~~~~~~
  110. * The new :option:`inspectdb --include-views` option allows creating models
  111. for database views.
  112. Migrations
  113. ~~~~~~~~~~
  114. * Added support for serialization of ``functools.partialmethod`` objects.
  115. Models
  116. ~~~~~~
  117. * Models can now use ``__init_subclass__()`` from :pep:`487`.
  118. * A ``BinaryField`` may now be set to ``editable=True`` if you wish to include
  119. it in model forms.
  120. * A number of new text database functions are added:
  121. :class:`~django.db.models.functions.Chr`,
  122. :class:`~django.db.models.functions.Ord`,
  123. :class:`~django.db.models.functions.Left`,
  124. :class:`~django.db.models.functions.Right`, and
  125. :class:`~django.db.models.functions.Replace`.
  126. * The new :class:`~django.db.models.functions.TruncWeek` function truncates
  127. :class:`~django.db.models.DateField` and
  128. :class:`~django.db.models.DateTimeField` to the Monday of a week.
  129. * Query expressions can now be negated using a minus sign.
  130. * :meth:`.QuerySet.order_by` and :meth:`distinct(*fields) <.QuerySet.distinct>`
  131. now support using field transforms.
  132. Requests and Responses
  133. ~~~~~~~~~~~~~~~~~~~~~~
  134. * Added :meth:`.HttpRequest.get_full_path_info`.
  135. Serialization
  136. ~~~~~~~~~~~~~
  137. * ...
  138. Signals
  139. ~~~~~~~
  140. * ...
  141. Templates
  142. ~~~~~~~~~
  143. * The new :tfilter:`json_script` filter safely outputs a Python object as JSON,
  144. wrapped in a ``<script>`` tag, ready for use with JavaScript.
  145. Tests
  146. ~~~~~
  147. * Added test :class:`~django.test.Client` support for 307 and 308 redirects.
  148. * The test :class:`~django.test.Client` now serializes a request data
  149. dictionary as JSON if ``content_type='application/json'``. You can customize
  150. the JSON encoder with test client's ``json_encoder`` parameter.
  151. URLs
  152. ~~~~
  153. * ...
  154. Validators
  155. ~~~~~~~~~~
  156. * ...
  157. .. _backwards-incompatible-2.1:
  158. Backwards incompatible changes in 2.1
  159. =====================================
  160. Database backend API
  161. --------------------
  162. * To adhere to :pep:`249`, exceptions where a database doesn't support a
  163. feature are changed from :exc:`NotImplementedError` to
  164. :exc:`django.db.NotSupportedError`.
  165. * Renamed the ``allow_sliced_subqueries`` database feature flag to
  166. ``allow_sliced_subqueries_with_in``.
  167. * ``DatabaseOperations.distinct_sql()`` now requires an additional ``params``
  168. argument and returns a tuple of SQL and parameters instead of a SQL string.
  169. :mod:`django.contrib.gis`
  170. -------------------------
  171. * Support for SpatiaLite 4.0 is removed.
  172. Dropped support for MySQL 5.5
  173. -----------------------------
  174. The end of upstream support for MySQL 5.5 is December 2018. Django 2.1 supports
  175. MySQL 5.6 and higher.
  176. Dropped support for PostgreSQL 9.3
  177. ----------------------------------
  178. The end of upstream support for PostgreSQL 9.3 is September 2018. Django 2.1
  179. supports PostgreSQL 9.4 and higher.
  180. Miscellaneous
  181. -------------
  182. * The minimum supported version of ``mysqlclient`` is increased from 1.3.3 to
  183. 1.3.7.
  184. * The date format of ``Set-Cookie``'s ``Expires`` directive is changed to
  185. follow :rfc:`7231#section-7.1.1.1` instead of Netscape's cookie standard.
  186. Hyphens present in dates like ``Tue, 25-Dec-2018 22:26:13 GMT`` are removed.
  187. This change should be merely cosmetic except perhaps for antiquated browsers
  188. that don't parse the new format.
  189. * ``allowed_hosts`` is now a required argument of private API
  190. ``django.utils.http.is_safe_url()``.
  191. * The ``multiple`` attribute rendered by the
  192. :class:`~django.forms.SelectMultiple` widget now uses HTML5 boolean syntax
  193. rather than XHTML's ``multiple="multiple"``.
  194. * HTML rendered by form widgets no longer includes a closing slash on void
  195. elements, e.g. ``<br>``. This is incompatible within XHTML, although some
  196. widgets already used aspects of HTML5 such as boolean attributes.
  197. * The value of :class:`~django.forms.SelectDateWidget`'s empty options is
  198. changed from 0 to an empty string, which mainly may require some adjustments
  199. in tests that compare HTML.
  200. .. _deprecated-features-2.1:
  201. Features deprecated in 2.1
  202. ==========================
  203. Miscellaneous
  204. -------------
  205. * The ``ForceRHR`` GIS function is deprecated in favor of the new
  206. :class:`~django.contrib.gis.db.models.functions.ForcePolygonCW` function.
  207. * ``django.utils.http.cookie_date()`` is deprecated in favor of
  208. :func:`~django.utils.http.http_date`, which follows the format of the latest
  209. RFC.
  210. * ``{% load staticfiles %}`` and ``{% load admin_static %}`` are deprecated
  211. in favor of ``{% load static %}``, which works the same.
  212. * ``django.contrib.staticfiles.templatetags.static()`` is deprecated in favor
  213. of ``django.templatetags.static.static()``.
  214. .. _removed-features-2.1:
  215. Features removed in 2.1
  216. =======================
  217. These features have reached the end of their deprecation cycle and are removed
  218. in Django 2.1. See :ref:`deprecated-features-1.11` for details, including how
  219. to remove usage of these features.
  220. in Django 2.1. See :ref:`deprecated-features-1.11` and for details, including
  221. how to remove usage of these features.
  222. * ``contrib.auth.views.login()``, ``logout()``, ``password_change()``,
  223. ``password_change_done()``, ``password_reset()``, ``password_reset_done()``,
  224. ``password_reset_confirm()``, and ``password_reset_complete()`` are removed.
  225. * The ``extra_context`` parameter of ``contrib.auth.views.logout_then_login()``
  226. is removed.
  227. * ``django.test.runner.setup_databases()`` is removed.
  228. * ``django.utils.translation.string_concat()`` is removed.
  229. * ``django.core.cache.backends.memcached.PyLibMCCache`` no longer supports
  230. passing ``pylibmc`` behavior settings as top-level attributes of ``OPTIONS``.
  231. * The ``host`` parameter of ``django.utils.http.is_safe_url()`` is removed.
  232. * Silencing of exceptions raised while rendering the ``{% include %}`` template
  233. tag is removed.
  234. * ``DatabaseIntrospection.get_indexes()`` is removed.
  235. * The ``authenticate()`` method of authentication backends requires ``request``
  236. as the first positional argument.
  237. * The ``django.db.models.permalink()`` decorator is removed.
  238. * The ``USE_ETAGS`` setting is removed. ``CommonMiddleware`` and
  239. ``django.utils.cache.patch_response_headers()`` no longer set ETags.
  240. * The ``Model._meta.has_auto_field`` attribute is removed.
  241. * Support for regular expression groups with ``iLmsu#`` in ``url()`` is removed.
  242. * Support for ``Widget.render()`` methods without the ``renderer`` argument
  243. is removed.