mirror of
https://github.com/django/django.git
synced 2025-08-04 19:08:28 +00:00
Fixed #31026 -- Switched form rendering to template engine.
Thanks Carlton Gibson, Keryn Knight, Mariusz Felisiak, and Nick Pope for reviews. Co-authored-by: Johannes Hoppe <info@johanneshoppe.com>
This commit is contained in:
parent
5353e7c250
commit
456466d932
56 changed files with 1047 additions and 329 deletions
|
@ -68,11 +68,11 @@ it uses a :class:`~django.template.backends.jinja2.Jinja2` backend. Templates
|
|||
for the built-in widgets are located in ``django/forms/jinja2`` and installed
|
||||
apps can provide templates in a ``jinja2`` directory.
|
||||
|
||||
To use this backend, all the widgets in your project and its third-party apps
|
||||
must have Jinja2 templates. Unless you provide your own Jinja2 templates for
|
||||
widgets that don't have any, you can't use this renderer. For example,
|
||||
:mod:`django.contrib.admin` doesn't include Jinja2 templates for its widgets
|
||||
due to their usage of Django template tags.
|
||||
To use this backend, all the forms and widgets in your project and its
|
||||
third-party apps must have Jinja2 templates. Unless you provide your own Jinja2
|
||||
templates for widgets that don't have any, you can't use this renderer. For
|
||||
example, :mod:`django.contrib.admin` doesn't include Jinja2 templates for its
|
||||
widgets due to their usage of Django template tags.
|
||||
|
||||
``TemplatesSetting``
|
||||
--------------------
|
||||
|
@ -97,6 +97,29 @@ Using this renderer along with the built-in widget templates requires either:
|
|||
Using this renderer requires you to make sure the form templates your project
|
||||
needs can be located.
|
||||
|
||||
Context available in formset templates
|
||||
======================================
|
||||
|
||||
.. versionadded:: 4.0
|
||||
|
||||
Formset templates receive a context from :meth:`.BaseFormSet.get_context`. By
|
||||
default, formsets receive a dictionary with the following values:
|
||||
|
||||
* ``formset``: The formset instance.
|
||||
|
||||
Context available in form templates
|
||||
===================================
|
||||
|
||||
.. versionadded:: 4.0
|
||||
|
||||
Form templates receive a context from :meth:`.Form.get_context`. By default,
|
||||
forms receive a dictionary with the following values:
|
||||
|
||||
* ``form``: The bound form.
|
||||
* ``fields``: All bound fields, except the hidden fields.
|
||||
* ``hidden_fields``: All hidden bound fields.
|
||||
* ``errors``: All non field related or hidden field related form errors.
|
||||
|
||||
Context available in widget templates
|
||||
=====================================
|
||||
|
||||
|
@ -114,6 +137,32 @@ Some widgets add further information to the context. For instance, all widgets
|
|||
that subclass ``Input`` defines ``widget['type']`` and :class:`.MultiWidget`
|
||||
defines ``widget['subwidgets']`` for looping purposes.
|
||||
|
||||
.. _overriding-built-in-formset-templates:
|
||||
|
||||
Overriding built-in formset templates
|
||||
=====================================
|
||||
|
||||
.. versionadded:: 4.0
|
||||
|
||||
:attr:`.BaseFormSet.template_name`
|
||||
|
||||
To override formset templates, you must use the :class:`TemplatesSetting`
|
||||
renderer. Then overriding widget templates works :doc:`the same as
|
||||
</howto/overriding-templates>` overriding any other template in your project.
|
||||
|
||||
.. _overriding-built-in-form-templates:
|
||||
|
||||
Overriding built-in form templates
|
||||
==================================
|
||||
|
||||
.. versionadded:: 4.0
|
||||
|
||||
:attr:`.Form.template_name`
|
||||
|
||||
To override form templates, you must use the :class:`TemplatesSetting`
|
||||
renderer. Then overriding widget templates works :doc:`the same as
|
||||
</howto/overriding-templates>` overriding any other template in your project.
|
||||
|
||||
.. _overriding-built-in-widget-templates:
|
||||
|
||||
Overriding built-in widget templates
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue