diff options
| author | David Smith <smithdc@gmail.com> | 2022-05-05 14:26:09 +0200 |
|---|---|---|
| committer | Carlton Gibson <carlton.gibson@noumenal.es> | 2022-05-17 11:16:54 +0200 |
| commit | d126eba3637d84caa80fa4258e2e59ef07a8260c (patch) | |
| tree | e135d40a0934710bae8dcb7e912b49695e600adb /docs/releases | |
| parent | 6af8673255ad2aca01097db9a8c64dc6b31678c0 (diff) | |
Refs #32339 -- Deprecated default.html form template.
Co-authored-by: Carlton Gibson <carlton.gibson@noumenal.es>
Diffstat (limited to 'docs/releases')
| -rw-r--r-- | docs/releases/4.1.txt | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/docs/releases/4.1.txt b/docs/releases/4.1.txt index 36a510b460..49f74a93b3 100644 --- a/docs/releases/4.1.txt +++ b/docs/releases/4.1.txt @@ -74,6 +74,24 @@ Validation of Constraints in the :attr:`Meta.constraints <django.db.models.Options.constraints>` option are now checked during :ref:`model validation <validating-objects>`. +Form rendering accessibility +---------------------------- + +In order to aid users with screen readers, and other assistive technology, new +``<div>`` based form templates are available from this release. These provide +more accessible navigation than the older templates, and are able to correctly +group related controls, such as radio-lists, into fieldsets. + +The new templates are recommended, and will become the default form rendering +style when outputting a form, like ``{{ form }}`` in a template, from Django +5.0. + +In order to ease adopting the new output style, the default form and formset +templates are now configurable at the project level via the +:setting:`FORM_RENDERER` setting. + +See :ref:`the Forms section (below)<forms-4.1>` for full details. + .. _csrf-cookie-masked-usage: ``CSRF_COOKIE_MASKED`` setting @@ -253,6 +271,8 @@ File Uploads * ... +.. _forms-4.1: + Forms ~~~~~ @@ -279,6 +299,34 @@ Forms as the template implements ``<fieldset>`` and ``<legend>`` to group related inputs and is easier for screen reader users to navigate. + The div-based output will become the default rendering style from Django 5.0. + +* In order to smooth adoption of the new ``<div>`` output style, two + transitional form renderer classes are available: + :class:`django.forms.renderers.DjangoDivFormRenderer` and + :class:`django.forms.renderers.Jinja2DivFormRenderer`, for the Django and + Jinja2 template backends respectively. + + You can apply one of these via the :setting:`FORM_RENDERER` setting. For + example:: + + FORM_RENDERER = "django.forms.renderers.DjangoDivFormRenderer" + + Once the ``<div>`` output style is the default, from Django 5.0, these + transitional renderers will be deprecated, for removal in Django 6.0. The + ``FORM_RENDERER`` declaration can be removed at that time. + +* If the new ``<div>`` output style is not appropriate for your project, you should + define a renderer subclass specifying + :attr:`~django.forms.renderers.BaseRenderer.form_template_name` and + :attr:`~django.forms.renderers.BaseRenderer.formset_template_name` for your + required style, and set :setting:`FORM_RENDERER` accordingly. + + For example, for the ``<p>`` output style used by :meth:`~.Form.as_p`, you + would define a form renderer setting ``form_template_name`` to + ``"django/forms/p.html"`` and ``formset_template_name`` to + ``"django/forms/formsets/p.html"``. + * The new :meth:`~django.forms.BoundField.legend_tag` allows rendering field labels in ``<legend>`` tags via the new ``tag`` argument of :meth:`~django.forms.BoundField.label_tag`. @@ -718,6 +766,10 @@ Miscellaneous ``Expression.asc()`` and ``Expression.desc()`` methods, and the ``OrderBy`` expression is deprecated. Use ``None`` instead. +* The ``"django/forms/default.html"`` and + ``"django/forms/formsets/default.html"`` templates which are a proxy to the + table-based templates are deprecated. Use the specific template instead. + Features removed in 4.1 ======================= |
