============================================ Django 1.9 release notes - UNDER DEVELOPMENT ============================================ Welcome to Django 1.9! These release notes cover the `new features`_, as well as some `backwards incompatible changes`_ you'll want to be aware of when upgrading from Django 1.8 or older versions. We've :ref:`dropped some features ` that have reached the end of their deprecation cycle, and we've `begun the deprecation process for some features`_. .. _`new features`: `What's new in Django 1.9`_ .. _`backwards incompatible changes`: `Backwards incompatible changes in 1.9`_ .. _`dropped some features`: `Features removed in 1.9`_ .. _`begun the deprecation process for some features`: `Features deprecated in 1.9`_ Python compatibility ==================== Like Django 1.8, Django 1.9 requires Python 2.7 or above, though we **highly recommend** the latest minor release. We've dropped support for Python 3.2 and added support for Python 3.5. What's new in Django 1.9 ======================== ... Minor features ~~~~~~~~~~~~~~ :mod:`django.contrib.admin` ^^^^^^^^^^^^^^^^^^^^^^^^^^^ * Admin views now have ``model_admin`` or ``admin_site`` attributes. :mod:`django.contrib.auth` ^^^^^^^^^^^^^^^^^^^^^^^^^^ * The default iteration count for the PBKDF2 password hasher has been increased by 20%. This backwards compatible change will not affect users who have subclassed ``django.contrib.auth.hashers.PBKDF2PasswordHasher`` to change the default value. :mod:`django.contrib.gis` ^^^^^^^^^^^^^^^^^^^^^^^^^^ * ... :mod:`django.contrib.messages` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ * ... :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 ^^^^^ * ... Email ^^^^^ * ... File Storage ^^^^^^^^^^^^ * ... File Uploads ^^^^^^^^^^^^ * ... Forms ^^^^^ * ... Generic Views ^^^^^^^^^^^^^ * Class based views generated using ``as_view()`` now have ``view_class`` and ``view_initkwargs`` attributes. Internationalization ^^^^^^^^^^^^^^^^^^^^ * ... Management Commands ^^^^^^^^^^^^^^^^^^^ * ... Models ^^^^^^ * ... Signals ^^^^^^^ * ... Templates ^^^^^^^^^ * ... Requests and Responses ^^^^^^^^^^^^^^^^^^^^^^ * ... Tests ^^^^^ * ... Validators ^^^^^^^^^^ * ... Backwards incompatible changes in 1.9 ===================================== .. warning:: In addition to the changes outlined in this section, be sure to review the :doc:`deprecation timeline ` for any features that have been removed. If you haven't updated your code within the deprecation timeline for a given feature, its removal may appear as a backwards incompatible change. Miscellaneous ~~~~~~~~~~~~~ * CSS and images in ``contrib.admin`` to support Internet Explorer 6 & 7 have been removed as these browsers have reached end-of-life. * ``django.http.responses.REASON_PHRASES`` and ``django.core.handlers.wsgi.STATUS_CODE_TEXT`` have been removed. Use Python's stdlib instead: :data:`http.client.responses` for Python 3 and `httplib.responses`_ for Python 2. .. _`httplib.responses`: https://docs.python.org/2/library/httplib.html#httplib.responses * ``ValuesQuerySet`` and ``ValuesListQuerySet`` have been removed. .. _deprecated-features-1.9: Features deprecated in 1.9 ========================== Miscellaneous ~~~~~~~~~~~~~ * The ``weak`` argument to ``django.dispatch.signals.Signal.disconnect()`` has been deprecated as it has no effect. * The ``check_aggregate_support()`` method of ``django.db.backends.base.BaseDatabaseOperations`` has been deprecated and will be removed in Django 2.1. The more general ``check_expression_support()`` should be used instead. * ``django.forms.extras`` is deprecated. You can find :class:`~django.forms.SelectDateWidget` in ``django.forms.widgets`` (or simply ``django.forms``) instead. .. removed-features-1.9: Features removed in 1.9 ======================= These features have reached the end of their deprecation cycle and so have been removed in Django 1.9 (please see the :ref:`deprecation timeline ` for more details): * ``django.utils.dictconfig`` is removed. * ``django.utils.importlib`` is removed. * ``django.utils.tzinfo`` is removed. * ``django.utils.unittest`` is removed. * The ``syncdb`` command is removed. * ``django.db.models.signals.pre_syncdb`` and ``django.db.models.signals.post_syncdb`` is removed. * Support for ``allow_syncdb`` on database routers is removed. * The legacy method of syncing apps without migrations is removed, and migrations are compulsory for all apps. This includes automatic loading of ``initial_data`` fixtures and support for initial SQL data. * All models need to be defined inside an installed application or declare an explicit :attr:`~django.db.models.Options.app_label`. Furthermore, it isn't possible to import them before their application is loaded. In particular, it isn't possible to import models inside the root package of an application. * The model and form ``IPAddressField`` is removed. A stub field remains for compatibility with historical migrations. * ``AppCommand.handle_app()`` is no longer be supported. * ``RequestSite`` and ``get_current_site()`` are no longer importable from ``django.contrib.sites.models``. * FastCGI support via the ``runfcgi`` management command is removed. * ``django.utils.datastructures.SortedDict`` is removed. * ``ModelAdmin.declared_fieldsets`` is removed. * The ``util`` modules that provided backwards compatibility are removed: * ``django.contrib.admin.util`` * ``django.contrib.gis.db.backends.util`` * ``django.db.backends.util`` * ``django.forms.util`` * ``ModelAdmin.get_formsets`` is removed. * The backward compatible shims introduced to rename the ``BaseMemcachedCache._get_memcache_timeout()`` method to ``get_backend_timeout()`` is removed. * The ``--natural`` and ``-n`` options for :djadmin:`dumpdata` are removed. * The ``use_natural_keys`` argument for ``serializers.serialize()`` is removed. * Private API ``django.forms.forms.get_declared_fields()`` is removed. * The ability to use a ``SplitDateTimeWidget`` with ``DateTimeField`` is removed. * The ``WSGIRequest.REQUEST`` property is removed. * The class ``django.utils.datastructures.MergeDict`` is removed. * The ``zh-cn`` and ``zh-tw`` language codes are removed. * The internal ``django.utils.functional.memoize()`` is removed. * ``django.core.cache.get_cache`` is removed. * ``django.db.models.loading`` is removed. * Passing callable arguments to querysets is no longer possible. * ``BaseCommand.requires_model_validation`` is removed in favor of ``requires_system_checks``. Admin validators is replaced by admin checks. * The ``ModelAdmin.validator_class`` and ``default_validator_class`` attributes are removed. * ``ModelAdmin.validate()`` is removed. * ``django.db.backends.DatabaseValidation.validate_field`` is removed in favor of the ``check_field`` method. * The ``check`` management command is removed. * ``django.utils.module_loading.import_by_path`` is removed in favor of ``django.utils.module_loading.import_string``. * ``ssi`` and ``url`` template tags are removed from the ``future`` template tag library. * ``django.utils.text.javascript_quote()`` is removed. * Database test settings as independent entries in the database settings, prefixed by ``TEST_``, are no longer supported. * The `cache_choices` option to :class:`~django.forms.ModelChoiceField` and :class:`~django.forms.ModelMultipleChoiceField` is removed. * The default value of the :attr:`RedirectView.permanent ` attribute has changed from ``True`` to ``False``. * ``django.contrib.sitemaps.FlatPageSitemap`` is removed in favor of ``django.contrib.flatpages.sitemaps.FlatPageSitemap``. * Private API ``django.test.utils.TestTemplateLoader`` is removed. * The ``django.contrib.contenttypes.generic`` module is removed.