Fixed #23075 -- Added documentation on novalidate attribute and made it default for admin

Thanks to sehmaschine for the report and to Tim Graham for the review.
This commit is contained in:
Erik Romijn 2014-08-23 10:27:33 +02:00
parent 5473c36cef
commit cbdda28208
3 changed files with 12 additions and 2 deletions

View File

@ -37,7 +37,7 @@
</ul>
{% endif %}{% endif %}
{% endblock %}
<form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="{{ form_url }}" method="post" id="{{ opts.model_name }}_form">{% csrf_token %}{% block form_top %}{% endblock %}
<form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="{{ form_url }}" method="post" id="{{ opts.model_name }}_form" novalidate>{% csrf_token %}{% block form_top %}{% endblock %}
<div>
{% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1" />{% endif %}
{% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}" />{% endif %}

View File

@ -81,7 +81,7 @@
{% endif %}
{% endblock %}
<form id="changelist-form" action="" method="post"{% if cl.formset.is_multipart %} enctype="multipart/form-data"{% endif %}>{% csrf_token %}
<form id="changelist-form" action="" method="post"{% if cl.formset.is_multipart %} enctype="multipart/form-data"{% endif %} novalidate>{% csrf_token %}
{% if cl.formset %}
<div>{{ cl.formset.management_form }}</div>
{% endif %}

View File

@ -341,6 +341,16 @@ from that ``{{ form }}`` by Django's template language.
directly tied to forms in templates, this tag is omitted from the
following examples in this document.
.. admonition:: HTML5 input types and browser validation
If your form includes a :class:`~django.forms.URLField`, an
:class:`~django.forms.EmailField` or any integer field type, Django will
use the ``url``, ``email`` and ``number`` HTML5 input types. By default,
browsers may apply their own validation on these fields, which may be
stricter than Django's validation. If you would like to disable this
behavior, set the `novalidate` attribute on the ``form`` tag, or specify
a different widget on the field, like :class:`TextInput`.
We now have a working web form, described by a Django :class:`Form`, processed
by a view, and rendered as an HTML ``<form>``.