summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Dufresne <jon.dufresne@gmail.com>2018-01-20 23:09:10 -0800
committerTim Graham <timograham@gmail.com>2018-01-21 02:09:10 -0500
commitff05de760cc4ef4c7f188e163c722ec3bc1f0cbf (patch)
treeba133d0ecea7521935c98cf1c058df4e6a9ff233
parent4b0f39d9fb2033a9597e30ac13af162440b82ebc (diff)
Fixed #29038 -- Removed closing slash from HTML void tags.
-rw-r--r--django/contrib/admin/options.py2
-rw-r--r--django/contrib/admin/templates/admin/auth/user/change_password.html8
-rw-r--r--django/contrib/admin/templates/admin/base.html12
-rw-r--r--django/contrib/admin/templates/admin/change_form.html6
-rw-r--r--django/contrib/admin/templates/admin/change_list.html4
-rw-r--r--django/contrib/admin/templates/admin/date_hierarchy.html2
-rw-r--r--django/contrib/admin/templates/admin/delete_confirmation.html8
-rw-r--r--django/contrib/admin/templates/admin/delete_selected_confirmation.html8
-rw-r--r--django/contrib/admin/templates/admin/edit_inline/tabular.html2
-rw-r--r--django/contrib/admin/templates/admin/index.html4
-rw-r--r--django/contrib/admin/templates/admin/login.html6
-rw-r--r--django/contrib/admin/templates/admin/pagination.html2
-rw-r--r--django/contrib/admin/templates/admin/related_widget_wrapper.html6
-rw-r--r--django/contrib/admin/templates/admin/search_form.html8
-rw-r--r--django/contrib/admin/templates/admin/submit_line.html8
-rw-r--r--django/contrib/admin/templates/admin/widgets/clearable_file_input.html6
-rw-r--r--django/contrib/admin/templates/admin/widgets/related_widget_wrapper.html6
-rw-r--r--django/contrib/admin/templates/admin/widgets/split_datetime.html2
-rw-r--r--django/contrib/admin/templates/admin/widgets/url.html2
-rw-r--r--django/contrib/admin/templates/registration/password_change_form.html4
-rw-r--r--django/contrib/admin/templates/registration/password_reset_confirm.html4
-rw-r--r--django/contrib/admin/templates/registration/password_reset_form.html4
-rw-r--r--django/contrib/admin/templatetags/admin_list.py2
-rw-r--r--django/contrib/admindocs/templates/admin_doc/template_filter_index.html4
-rw-r--r--django/contrib/admindocs/templates/admin_doc/template_tag_index.html4
-rw-r--r--django/contrib/admindocs/templates/admin_doc/view_index.html2
-rw-r--r--django/forms/forms.py2
-rw-r--r--django/forms/jinja2/django/forms/widgets/clearable_file_input.html6
-rw-r--r--django/forms/jinja2/django/forms/widgets/input.html2
-rw-r--r--django/forms/templates/django/forms/widgets/clearable_file_input.html6
-rw-r--r--django/forms/templates/django/forms/widgets/input.html2
-rw-r--r--django/forms/widgets.py2
-rw-r--r--django/template/backends/utils.py2
-rw-r--r--django/template/defaultfilters.py6
-rw-r--r--django/template/defaulttags.py4
-rw-r--r--django/test/html.py2
-rw-r--r--django/utils/html.py6
-rw-r--r--django/views/static.py6
-rw-r--r--docs/howto/static-files/index.txt2
-rw-r--r--docs/intro/contributing.txt4
-rw-r--r--docs/intro/overview.txt2
-rw-r--r--docs/intro/tutorial04.txt6
-rw-r--r--docs/intro/tutorial06.txt2
-rw-r--r--docs/ref/class-based-views/generic-editing.txt8
-rw-r--r--docs/ref/contrib/admin/index.txt2
-rw-r--r--docs/ref/forms/api.txt222
-rw-r--r--docs/ref/forms/fields.txt50
-rw-r--r--docs/ref/forms/widgets.txt34
-rw-r--r--docs/ref/request-response.txt2
-rw-r--r--docs/ref/templates/builtins.txt22
-rw-r--r--docs/ref/templates/language.txt4
-rw-r--r--docs/releases/2.1.txt4
-rw-r--r--docs/topics/auth/default.txt4
-rw-r--r--docs/topics/forms/formsets.txt66
-rw-r--r--docs/topics/forms/index.txt10
-rw-r--r--docs/topics/forms/media.txt32
-rw-r--r--docs/topics/forms/modelforms.txt14
-rw-r--r--docs/topics/i18n/timezones.txt2
-rw-r--r--docs/topics/i18n/translation.txt12
-rw-r--r--docs/topics/pagination.txt2
-rw-r--r--docs/topics/testing/tools.txt2
-rw-r--r--tests/admin_changelist/tests.py6
-rw-r--r--tests/admin_docs/test_views.py2
-rw-r--r--tests/admin_inlines/tests.py70
-rw-r--r--tests/admin_utils/tests.py6
-rw-r--r--tests/admin_views/tests.py26
-rw-r--r--tests/admin_widgets/tests.py56
-rw-r--r--tests/csrf_tests/views.py2
-rw-r--r--tests/forms_tests/field_tests/test_charfield.py2
-rw-r--r--tests/forms_tests/field_tests/test_datefield.py2
-rw-r--r--tests/forms_tests/field_tests/test_decimalfield.py8
-rw-r--r--tests/forms_tests/field_tests/test_emailfield.py4
-rw-r--r--tests/forms_tests/field_tests/test_floatfield.py8
-rw-r--r--tests/forms_tests/field_tests/test_integerfield.py10
-rw-r--r--tests/forms_tests/field_tests/test_multivaluefield.py12
-rw-r--r--tests/forms_tests/field_tests/test_nullbooleanfield.py4
-rw-r--r--tests/forms_tests/field_tests/test_urlfield.py4
-rw-r--r--tests/forms_tests/tests/test_forms.py844
-rw-r--r--tests/forms_tests/tests/test_formsets.py206
-rw-r--r--tests/forms_tests/tests/test_i18n.py18
-rw-r--r--tests/forms_tests/tests/test_media.py112
-rw-r--r--tests/forms_tests/tests/tests.py30
-rw-r--r--tests/forms_tests/widget_tests/test_checkboxinput.py22
-rw-r--r--tests/forms_tests/widget_tests/test_checkboxselectmultiple.py66
-rw-r--r--tests/forms_tests/widget_tests/test_clearablefileinput.py26
-rw-r--r--tests/forms_tests/widget_tests/test_dateinput.py12
-rw-r--r--tests/forms_tests/widget_tests/test_datetimeinput.py16
-rw-r--r--tests/forms_tests/widget_tests/test_fileinput.py6
-rw-r--r--tests/forms_tests/widget_tests/test_hiddeninput.py2
-rw-r--r--tests/forms_tests/widget_tests/test_input.py6
-rw-r--r--tests/forms_tests/widget_tests/test_multiplehiddeninput.py26
-rw-r--r--tests/forms_tests/widget_tests/test_multiwidget.py34
-rw-r--r--tests/forms_tests/widget_tests/test_numberinput.py2
-rw-r--r--tests/forms_tests/widget_tests/test_passwordinput.py10
-rw-r--r--tests/forms_tests/widget_tests/test_radioselect.py54
-rw-r--r--tests/forms_tests/widget_tests/test_splitdatetimewidget.py24
-rw-r--r--tests/forms_tests/widget_tests/test_splithiddendatetimewidget.py22
-rw-r--r--tests/forms_tests/widget_tests/test_textinput.py24
-rw-r--r--tests/forms_tests/widget_tests/test_timeinput.py14
-rw-r--r--tests/forms_tests/widget_tests/test_widget.py4
-rw-r--r--tests/generic_relations/test_forms.py32
-rw-r--r--tests/i18n/tests.py22
-rw-r--r--tests/model_forms/tests.py116
-rw-r--r--tests/model_formsets/tests.py240
-rw-r--r--tests/postgres_tests/test_array.py14
-rw-r--r--tests/postgres_tests/test_ranges.py20
-rw-r--r--tests/staticfiles_tests/test_forms.py4
-rw-r--r--tests/template_backends/test_dummy.py2
-rw-r--r--tests/template_tests/filter_tests/test_linebreaks.py16
-rw-r--r--tests/template_tests/filter_tests/test_linebreaksbr.py14
-rw-r--r--tests/templates/login.html4
-rw-r--r--tests/utils_tests/test_html.py4
112 files changed, 1487 insertions, 1483 deletions
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py
index 1c27dc400b..268ce012d1 100644
--- a/django/contrib/admin/options.py
+++ b/django/contrib/admin/options.py
@@ -809,7 +809,7 @@ class ModelAdmin(BaseModelAdmin):
A list_display column containing a checkbox widget.
"""
return helpers.checkbox.render(helpers.ACTION_CHECKBOX_NAME, str(obj.pk))
- action_checkbox.short_description = mark_safe('<input type="checkbox" id="action-toggle" />')
+ action_checkbox.short_description = mark_safe('<input type="checkbox" id="action-toggle">')
def get_actions(self, request):
"""
diff --git a/django/contrib/admin/templates/admin/auth/user/change_password.html b/django/contrib/admin/templates/admin/auth/user/change_password.html
index 7a47707df9..4b3bfb920c 100644
--- a/django/contrib/admin/templates/admin/auth/user/change_password.html
+++ b/django/contrib/admin/templates/admin/auth/user/change_password.html
@@ -5,7 +5,7 @@
{% block extrahead %}{{ block.super }}
<script type="text/javascript" src="{% url 'admin:jsi18n' %}"></script>
{% endblock %}
-{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}" />{% endblock %}
+{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}">{% endblock %}
{% block bodyclass %}{{ block.super }} {{ opts.app_label }}-{{ opts.model_name }} change-form{% endblock %}
{% if not is_popup %}
{% block breadcrumbs %}
@@ -20,9 +20,9 @@
{% endif %}
{% block content %}<div id="content-main">
<form action="{{ form_url }}" method="post" id="{{ opts.model_name }}_form">{% csrf_token %}{% block form_top %}{% endblock %}
-<input type="text" name="username" value="{{ original.get_username }}" style="display: none" />
+<input type="text" name="username" value="{{ original.get_username }}" style="display: none">
<div>
-{% if is_popup %}<input type="hidden" name="_popup" value="1" />{% endif %}
+{% if is_popup %}<input type="hidden" name="_popup" value="1">{% endif %}
{% if form.errors %}
<p class="errornote">
{% if form.errors.items|length == 1 %}{% trans "Please correct the error below." %}{% else %}{% trans "Please correct the errors below." %}{% endif %}
@@ -52,7 +52,7 @@
</fieldset>
<div class="submit-row">
-<input type="submit" value="{% trans 'Change password' %}" class="default" />
+<input type="submit" value="{% trans 'Change password' %}" class="default">
</div>
</div>
diff --git a/django/contrib/admin/templates/admin/base.html b/django/contrib/admin/templates/admin/base.html
index c4c7ca85c6..2cf5137070 100644
--- a/django/contrib/admin/templates/admin/base.html
+++ b/django/contrib/admin/templates/admin/base.html
@@ -3,16 +3,16 @@
<html lang="{{ LANGUAGE_CODE|default:"en-us" }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %}>
<head>
<title>{% block title %}{% endblock %}</title>
-<link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" />
+<link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}">
{% block extrastyle %}{% endblock %}
-{% if LANGUAGE_BIDI %}<link rel="stylesheet" type="text/css" href="{% block stylesheet_rtl %}{% static "admin/css/rtl.css" %}{% endblock %}" />{% endif %}
+{% if LANGUAGE_BIDI %}<link rel="stylesheet" type="text/css" href="{% block stylesheet_rtl %}{% static "admin/css/rtl.css" %}{% endblock %}">{% endif %}
{% block extrahead %}{% endblock %}
{% block responsive %}
<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0">
- <link rel="stylesheet" type="text/css" href="{% static "admin/css/responsive.css" %}" />
- {% if LANGUAGE_BIDI %}<link rel="stylesheet" type="text/css" href="{% static "admin/css/responsive_rtl.css" %}" />{% endif %}
+ <link rel="stylesheet" type="text/css" href="{% static "admin/css/responsive.css" %}">
+ {% if LANGUAGE_BIDI %}<link rel="stylesheet" type="text/css" href="{% static "admin/css/responsive_rtl.css" %}">{% endif %}
{% endblock %}
-{% block blockbots %}<meta name="robots" content="NONE,NOARCHIVE" />{% endblock %}
+{% block blockbots %}<meta name="robots" content="NONE,NOARCHIVE">{% endblock %}
</head>
{% load i18n %}
@@ -81,7 +81,7 @@
{{ content }}
{% endblock %}
{% block sidebar %}{% endblock %}
- <br class="clear" />
+ <br class="clear">
</div>
<!-- END Content -->
diff --git a/django/contrib/admin/templates/admin/change_form.html b/django/contrib/admin/templates/admin/change_form.html
index fd0b130b2d..f77e50a130 100644
--- a/django/contrib/admin/templates/admin/change_form.html
+++ b/django/contrib/admin/templates/admin/change_form.html
@@ -6,7 +6,7 @@
{{ media }}
{% endblock %}
-{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}" />{% endblock %}
+{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}">{% endblock %}
{% block coltype %}colM{% endblock %}
@@ -39,8 +39,8 @@
{% 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 %}
+{% 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 %}
{% if save_on_top %}{% block submit_buttons_top %}{% submit_row %}{% endblock %}{% endif %}
{% if errors %}
<p class="errornote">
diff --git a/django/contrib/admin/templates/admin/change_list.html b/django/contrib/admin/templates/admin/change_list.html
index e0af704aa9..34a4031799 100644
--- a/django/contrib/admin/templates/admin/change_list.html
+++ b/django/contrib/admin/templates/admin/change_list.html
@@ -3,9 +3,9 @@
{% block extrastyle %}
{{ block.super }}
- <link rel="stylesheet" type="text/css" href="{% static "admin/css/changelists.css" %}" />
+ <link rel="stylesheet" type="text/css" href="{% static "admin/css/changelists.css" %}">
{% if cl.formset %}
- <link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}" />
+ <link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}">
{% endif %}
{% if cl.formset or action_form %}
<script type="text/javascript" src="{% url 'admin:jsi18n' %}"></script>
diff --git a/django/contrib/admin/templates/admin/date_hierarchy.html b/django/contrib/admin/templates/admin/date_hierarchy.html
index 005851051c..ecbd2a1a00 100644
--- a/django/contrib/admin/templates/admin/date_hierarchy.html
+++ b/django/contrib/admin/templates/admin/date_hierarchy.html
@@ -5,6 +5,6 @@
{% for choice in choices %}
<li> {% if choice.link %}<a href="{{ choice.link }}">{% endif %}{{ choice.title }}{% if choice.link %}</a>{% endif %}</li>
{% endfor %}
-</ul><br class="clear" />
+</ul><br class="clear">
</div>
{% endif %}
diff --git a/django/contrib/admin/templates/admin/delete_confirmation.html b/django/contrib/admin/templates/admin/delete_confirmation.html
index 2dedc84491..c28a87cd9b 100644
--- a/django/contrib/admin/templates/admin/delete_confirmation.html
+++ b/django/contrib/admin/templates/admin/delete_confirmation.html
@@ -41,10 +41,10 @@
<ul>{{ deleted_objects|unordered_list }}</ul>
<form method="post">{% csrf_token %}
<div>
- <input type="hidden" name="post" value="yes" />
- {% 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 %}
- <input type="submit" value="{% trans "Yes, I'm sure" %}" />
+ <input type="hidden" name="post" value="yes">
+ {% 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 %}
+ <input type="submit" value="{% trans "Yes, I'm sure" %}">
<a href="#" class="button cancel-link">{% trans "No, take me back" %}</a>
</div>
</form>
diff --git a/django/contrib/admin/templates/admin/delete_selected_confirmation.html b/django/contrib/admin/templates/admin/delete_selected_confirmation.html
index 6ae53fecd3..4d77ae33a0 100644
--- a/django/contrib/admin/templates/admin/delete_selected_confirmation.html
+++ b/django/contrib/admin/templates/admin/delete_selected_confirmation.html
@@ -43,11 +43,11 @@
<form method="post">{% csrf_token %}
<div>
{% for obj in queryset %}
- <input type="hidden" name="{{ action_checkbox_name }}" value="{{ obj.pk|unlocalize }}" />
+ <input type="hidden" name="{{ action_checkbox_name }}" value="{{ obj.pk|unlocalize }}">
{% endfor %}
- <input type="hidden" name="action" value="delete_selected" />
- <input type="hidden" name="post" value="yes" />
- <input type="submit" value="{% trans "Yes, I'm sure" %}" />
+ <input type="hidden" name="action" value="delete_selected">
+ <input type="hidden" name="post" value="yes">
+ <input type="submit" value="{% trans "Yes, I'm sure" %}">
<a href="#" class="button cancel-link">{% trans "No, take me back" %}</a>
</div>
</form>
diff --git a/django/contrib/admin/templates/admin/edit_inline/tabular.html b/django/contrib/admin/templates/admin/edit_inline/tabular.html
index f04faadf2f..2f449d67af 100644
--- a/django/contrib/admin/templates/admin/edit_inline/tabular.html
+++ b/django/contrib/admin/templates/admin/edit_inline/tabular.html
@@ -13,7 +13,7 @@
{% for field in inline_admin_formset.fields %}
{% if not field.widget.is_hidden %}
<th{% if field.required %} class="required"{% endif %}>{{ field.label|capfirst }}
- {% if field.help_text %}&nbsp;<img src="{% static "admin/img/icon-unknown.svg" %}" class="help help-tooltip" width="10" height="10" alt="({{ field.help_text|striptags }})" title="{{ field.help_text|striptags }}" />{% endif %}
+ {% if field.help_text %}&nbsp;<img src="{% static "admin/img/icon-unknown.svg" %}" class="help help-tooltip" width="10" height="10" alt="({{ field.help_text|striptags }})" title="{{ field.help_text|striptags }}">{% endif %}
</th>
{% endif %}
{% endfor %}
diff --git a/django/contrib/admin/templates/admin/index.html b/django/contrib/admin/templates/admin/index.html
index 5a4b127178..03383db8ea 100644
--- a/django/contrib/admin/templates/admin/index.html
+++ b/django/contrib/admin/templates/admin/index.html
@@ -1,7 +1,7 @@
{% extends "admin/base_site.html" %}
{% load i18n static %}
-{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/dashboard.css" %}" />{% endblock %}
+{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/dashboard.css" %}">{% endblock %}
{% block coltype %}colMS{% endblock %}
@@ -67,7 +67,7 @@
{% else %}
<a href="{{ entry.get_admin_url }}">{{ entry.object_repr }}</a>
{% endif %}
- <br/>
+ <br>
{% if entry.content_type %}
<span class="mini quiet">{% filter capfirst %}{{ entry.content_type }}{% endfilter %}</span>
{% else %}
diff --git a/django/contrib/admin/templates/admin/login.html b/django/contrib/admin/templates/admin/login.html
index 397eadf4a2..396be276f9 100644
--- a/django/contrib/admin/templates/admin/login.html
+++ b/django/contrib/admin/templates/admin/login.html
@@ -1,7 +1,7 @@
{% extends "admin/base_site.html" %}
{% load i18n static %}
-{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/login.css" %}" />
+{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/login.css" %}">
{{ form.media }}
{% endblock %}
@@ -49,7 +49,7 @@
<div class="form-row">
{{ form.password.errors }}
{{ form.password.label_tag }} {{ form.password }}
- <input type="hidden" name="next" value="{{ next }}" />
+ <input type="hidden" name="next" value="{{ next }}">
</div>
{% url 'admin_password_reset' as password_reset_url %}
{% if password_reset_url %}
@@ -58,7 +58,7 @@
</div>
{% endif %}
<div class="submit-row">
- <label>&nbsp;</label><input type="submit" value="{% trans 'Log in' %}" />
+ <label>&nbsp;</label><input type="submit" value="{% trans 'Log in' %}">
</div>
</form>
diff --git a/django/contrib/admin/templates/admin/pagination.html b/django/contrib/admin/templates/admin/pagination.html
index fc1e600805..bef843a444 100644
--- a/django/contrib/admin/templates/admin/pagination.html
+++ b/django/contrib/admin/templates/admin/pagination.html
@@ -8,5 +8,5 @@
{% endif %}
{{ cl.result_count }} {% if cl.result_count == 1 %}{{ cl.opts.verbose_name }}{% else %}{{ cl.opts.verbose_name_plural }}{% endif %}
{% if show_all_url %}&nbsp;&nbsp;<a href="{{ show_all_url }}" class="showall">{% trans 'Show all' %}</a>{% endif %}
-{% if cl.formset and cl.result_count %}<input type="submit" name="_save" class="default" value="{% trans 'Save' %}"/>{% endif %}
+{% if cl.formset and cl.result_count %}<input type="submit" name="_save" class="default" value="{% trans 'Save' %}">{% endif %}
</p>
diff --git a/django/contrib/admin/templates/admin/related_widget_wrapper.html b/django/contrib/admin/templates/admin/related_widget_wrapper.html
index af17be8111..7b0a809392 100644
--- a/django/contrib/admin/templates/admin/related_widget_wrapper.html
+++ b/django/contrib/admin/templates/admin/related_widget_wrapper.html
@@ -7,21 +7,21 @@
<a class="related-widget-wrapper-link change-related" id="change_id_{{ name }}"
data-href-template="{{ change_related_template_url }}?{{ url_params }}"
title="{% blocktrans %}Change selected {{ model }}{% endblocktrans %}">
- <img src="{% static 'admin/img/icon-changelink.svg' %}" alt="{% trans 'Change' %}"/>
+ <img src="{% static 'admin/img/icon-changelink.svg' %}" alt="{% trans 'Change' %}">
</a>
{% endif %}
{% if can_add_related %}
<a class="related-widget-wrapper-link add-related" id="add_id_{{ name }}"
href="{{ add_related_url }}?{{ url_params }}"
title="{% blocktrans %}Add another {{ model }}{% endblocktrans %}">
- <img src="{% static 'admin/img/icon-addlink.svg' %}" alt="{% trans 'Add' %}"/>
+ <img src="{% static 'admin/img/icon-addlink.svg' %}" alt="{% trans 'Add' %}">
</a>
{% endif %}
{% if can_delete_related %}
<a class="related-widget-wrapper-link delete-related" id="delete_id_{{ name }}"
data-href-template="{{ delete_related_template_url }}?{{ url_params }}"
title="{% blocktrans %}Delete selected {{ model }}{% endblocktrans %}">
- <img src="{% static 'admin/img/icon-deletelink.svg' %}" alt="{% trans 'Delete' %}"/>
+ <img src="{% static 'admin/img/icon-deletelink.svg' %}" alt="{% trans 'Delete' %}">
</a>
{% endif %}
{% endspaceless %}
diff --git a/django/contrib/admin/templates/admin/search_form.html b/django/contrib/admin/templates/admin/search_form.html
index 1417c1f599..3bb5cba52c 100644
--- a/django/contrib/admin/templates/admin/search_form.html
+++ b/django/contrib/admin/templates/admin/search_form.html
@@ -2,14 +2,14 @@
{% if cl.search_fields %}
<div id="toolbar"><form id="changelist-search" method="get">
<div><!-- DIV needed for valid HTML -->
-<label for="searchbar"><img src="{% static "admin/img/search.svg" %}" alt="Search" /></label>
-<input type="text" size="40" name="{{ search_var }}" value="{{ cl.query }}" id="searchbar" autofocus />
-<input type="submit" value="{% trans 'Search' %}" />
+<label for="searchbar"><img src="{% static "admin/img/search.svg" %}" alt="Search"></label>
+<input type="text" size="40" name="{{ search_var }}" value="{{ cl.query }}" id="searchbar" autofocus>
+<input type="submit" value="{% trans 'Search' %}">
{% if show_result_count %}
<span class="small quiet">{% blocktrans count counter=cl.result_count %}{{ counter }} result{% plural %}{{ counter }} results{% endblocktrans %} (<a href="?{% if cl.is_popup %}_popup=1{% endif %}">{% if cl.show_full_result_count %}{% blocktrans with full_result_count=cl.full_result_count %}{{ full_result_count }} total{% endblocktrans %}{% else %}{% trans "Show all" %}{% endif %}</a>)</span>
{% endif %}
{% for pair in cl.params.items %}
- {% if pair.0 != search_var %}<input type="hidden" name="{{ pair.0 }}" value="{{ pair.1 }}"/>{% endif %}
+ {% if pair.0 != search_var %}<input type="hidden" name="{{ pair.0 }}" value="{{ pair.1 }}">{% endif %}
{% endfor %}
</div>
</form></div>
diff --git a/django/contrib/admin/templates/admin/submit_line.html b/django/contrib/admin/templates/admin/submit_line.html
index d6db711953..2e6cf057f0 100644
--- a/django/contrib/admin/templates/admin/submit_line.html
+++ b/django/contrib/admin/templates/admin/submit_line.html
@@ -1,11 +1,11 @@
{% load i18n admin_urls %}
<div class="submit-row">
-{% if show_save %}<input type="submit" value="{% trans 'Save' %}" class="default" name="_save" />{% endif %}
+{% if show_save %}<input type="submit" value="{% trans 'Save' %}" class="default" name="_save">{% endif %}
{% if show_delete_link %}
{% url opts|admin_urlname:'delete' original.pk|admin_urlquote as delete_url %}
<p class="deletelink-box"><a href="{% add_preserved_filters delete_url %}" class="deletelink">{% trans "Delete" %}</a></p>
{% endif %}
-{% if show_save_as_new %}<input type="submit" value="{% trans 'Save as new' %}" name="_saveasnew" />{% endif %}
-{% if show_save_and_add_another %}<input type="submit" value="{% trans 'Save and add another' %}" name="_addanother" />{% endif %}
-{% if show_save_and_continue %}<input type="submit" value="{% trans 'Save and continue editing' %}" name="_continue" />{% endif %}
+{% if show_save_as_new %}<input type="submit" value="{% trans 'Save as new' %}" name="_saveasnew">{% endif %}
+{% if show_save_and_add_another %}<input type="submit" value="{% trans 'Save and add another' %}" name="_addanother">{% endif %}
+{% if show_save_and_continue %}<input type="submit" value="{% trans 'Save and continue editing' %}" name="_continue">{% endif %}
</div>
diff --git a/django/contrib/admin/templates/admin/widgets/clearable_file_input.html b/django/contrib/admin/templates/admin/widgets/clearable_file_input.html
index 71491fca45..80699d1a50 100644
--- a/django/contrib/admin/templates/admin/widgets/clearable_file_input.html
+++ b/django/contrib/admin/templates/admin/widgets/clearable_file_input.html
@@ -1,6 +1,6 @@
{% if widget.is_initial %}<p class="file-upload">{{ widget.initial_text }}: <a href="{{ widget.value.url }}">{{ widget.value }}</a>{% if not widget.required %}
<span class="clearable-file-input">
-<input type="checkbox" name="{{ widget.checkbox_name }}" id="{{ widget.checkbox_id }}" />
-<label for="{{ widget.checkbox_id }}">{{ widget.clear_checkbox_label }}</label></span>{% endif %}<br />
+<input type="checkbox" name="{{ widget.checkbox_name }}" id="{{ widget.checkbox_id }}">
+<label for="{{ widget.checkbox_id }}">{{ widget.clear_checkbox_label }}</label></span>{% endif %}<br>
{{ widget.input_text }}:{% endif %}
-<input type="{{ widget.type }}" name="{{ widget.name }}"{% include "django/forms/widgets/attrs.html" %} />{% if widget.is_initial %}</p>{% endif %}
+<input type="{{ widget.type }}" name="{{ widget.name }}"{% include "django/forms/widgets/attrs.html" %}>{% if widget.is_initial %}</p>{% endif %}
diff --git a/django/contrib/admin/templates/admin/widgets/related_widget_wrapper.html b/django/contrib/admin/templates/admin/widgets/related_widget_wrapper.html
index b84ab14cca..281d331443 100644
--- a/django/contrib/admin/templates/admin/widgets/related_widget_wrapper.html
+++ b/django/contrib/admin/templates/admin/widgets/related_widget_wrapper.html
@@ -7,21 +7,21 @@
<a class="related-widget-wrapper-link change-related" id="change_id_{{ name }}"
data-href-template="{{ change_related_template_url }}?{{ url_params }}"
title="{% blocktrans %}Change selected {{ model }}{% endblocktrans %}">
- <img src="{% static 'admin/img/icon-changelink.svg' %}" alt="{% trans 'Change' %}"/>
+ <img src="{% static 'admin/img/icon-changelink.svg' %}" alt="{% trans 'Change' %}">
</a>
{% endif %}
{% if can_add_related %}
<a class="related-widget-wrapper-link add-related" id="add_id_{{ name }}"
href="{{ add_related_url }}?{{ url_params }}"
title="{% blocktrans %}Add another {{ model }}{% endblocktrans %}">
- <img src="{% static 'admin/img/icon-addlink.svg' %}" alt="{% trans 'Add' %}"/>
+ <img src="{% static 'admin/img/icon-addlink.svg' %}" alt="{% trans 'Add' %}">
</a>
{% endif %}
{% if can_delete_related %}
<a class="related-widget-wrapper-link delete-related" id="delete_id_{{ name }}"
data-href-template="{{ delete_related_template_url }}?{{ url_params }}"
title="{% blocktrans %}Delete selected {{ model }}{% endblocktrans %}">
- <img src="{% static 'admin/img/icon-deletelink.svg' %}" alt="{% trans 'Delete' %}"/>
+ <img src="{% static 'admin/img/icon-deletelink.svg' %}" alt="{% trans 'Delete' %}">
</a>
{% endif %}
{% endspaceless %}
diff --git a/django/contrib/admin/templates/admin/widgets/split_datetime.html b/django/contrib/admin/templates/admin/widgets/split_datetime.html
index 985f82d0ab..7fc7bf6833 100644
--- a/django/contrib/admin/templates/admin/widgets/split_datetime.html
+++ b/django/contrib/admin/templates/admin/widgets/split_datetime.html
@@ -1,4 +1,4 @@
<p class="datetime">
- {{ date_label }} {% with widget=widget.subwidgets.0 %}{% include widget.template_name %}{% endwith %}<br />
+ {{ date_label }} {% with widget=widget.subwidgets.0 %}{% include widget.template_name %}{% endwith %}<br>
{{ time_label }} {% with widget=widget.subwidgets.1 %}{% include widget.template_name %}{% endwith %}
</p>
diff --git a/django/contrib/admin/templates/admin/widgets/url.html b/django/contrib/admin/templates/admin/widgets/url.html
index 554a9343fe..ee1a66a35f 100644
--- a/django/contrib/admin/templates/admin/widgets/url.html
+++ b/django/contrib/admin/templates/admin/widgets/url.html
@@ -1 +1 @@
-{% if widget.value %}<p class="url">{{ current_label }} <a href="{{ widget.href }}">{{ widget.value }}</a><br />{{ change_label }} {% endif %}{% include "django/forms/widgets/input.html" %}{% if widget.value %}</p>{% endif %}
+{% if widget.value %}<p class="url">{{ current_label }} <a href="{{ widget.href }}">{{ widget.value }}</a><br>{{ change_label }} {% endif %}{% include "django/forms/widgets/input.html" %}{% if widget.value %}</p>{% endif %}
diff --git a/django/contrib/admin/templates/registration/password_change_form.html b/django/contrib/admin/templates/registration/password_change_form.html
index a48017700f..8c26108c6e 100644
--- a/django/contrib/admin/templates/registration/password_change_form.html
+++ b/django/contrib/admin/templates/registration/password_change_form.html
@@ -1,6 +1,6 @@
{% extends "admin/base_site.html" %}
{% load i18n static %}
-{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}" />{% endblock %}
+{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}">{% endblock %}
{% block userlinks %}{% url 'django-admindocs-docroot' as docsroot %}{% if docsroot %}<a href="{{ docsroot }}">{% trans 'Documentation' %}</a> / {% endif %} {% trans 'Change password' %} / <a href="{% url 'admin:logout' %}">{% trans 'Log out' %}</a>{% endblock %}
{% block breadcrumbs %}
<div class="breadcrumbs">
@@ -51,7 +51,7 @@
</fieldset>
<div class="submit-row">
- <input type="submit" value="{% trans 'Change my password' %}" class="default" />
+ <input type="submit" value="{% trans 'Change my password' %}" class="default">
</div>
</div>
diff --git a/django/contrib/admin/templates/registration/password_reset_confirm.html b/django/contrib/admin/templates/registration/password_reset_confirm.html
index 1a24527c1d..8666fa903c 100644
--- a/django/contrib/admin/templates/registration/password_reset_confirm.html
+++ b/django/contrib/admin/templates/registration/password_reset_confirm.html
@@ -1,7 +1,7 @@
{% extends "admin/base_site.html" %}
{% load i18n static %}
-{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}" />{% endblock %}
+{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}">{% endblock %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
@@ -29,7 +29,7 @@
<label for="id_new_password2">{% trans 'Confirm password:' %}</label>
{{ form.new_password2 }}
</div>
- <input type="submit" value="{% trans 'Change my password' %}" />
+ <input type="submit" value="{% trans 'Change my password' %}">
</fieldset>
</form>
diff --git a/django/contrib/admin/templates/registration/password_reset_form.html b/django/contrib/admin/templates/registration/password_reset_form.html
index 5110d1a995..5c5d761d97 100644
--- a/django/contrib/admin/templates/registration/password_reset_form.html
+++ b/django/contrib/admin/templates/registration/password_reset_form.html
@@ -1,7 +1,7 @@
{% extends "admin/base_site.html" %}
{% load i18n static %}
-{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}" />{% endblock %}
+{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}">{% endblock %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
@@ -22,7 +22,7 @@
<label for="id_email">{% trans 'Email address:' %}</label>
{{ form.email }}
</div>
- <input type="submit" value="{% trans 'Reset my password' %}" />
+ <input type="submit" value="{% trans 'Reset my password' %}">
</fieldset>
</form>
diff --git a/django/contrib/admin/templatetags/admin_list.py b/django/contrib/admin/templatetags/admin_list.py
index 7908b0333f..ab0db80301 100644
--- a/django/contrib/admin/templatetags/admin_list.py
+++ b/django/contrib/admin/templatetags/admin_list.py
@@ -177,7 +177,7 @@ def result_headers(cl):
def _boolean_icon(field_val):
icon_url = static('admin/img/icon-%s.svg' %
{True: 'yes', False: 'no', None: 'unknown'}[field_val])
- return format_html('<img src="{}" alt="{}" />', icon_url, field_val)
+ return format_html('<img src="{}" alt="{}">', icon_url, field_val)
def _coerce_field_name(field_name, field_index):
diff --git a/django/contrib/admindocs/templates/admin_doc/template_filter_index.html b/django/contrib/admindocs/templates/admin_doc/template_filter_index.html
index 44f0c71aae..caf983ac6d 100644
--- a/django/contrib/admindocs/templates/admin_doc/template_filter_index.html
+++ b/django/contrib/admindocs/templates/admin_doc/template_filter_index.html
@@ -20,12 +20,12 @@
{% for library in filter_libraries %}
<div class="module">
<h2>{% firstof library.grouper _("Built-in filters") %}</h2>
- {% if library.grouper %}<p class="small quiet">{% blocktrans with code="{"|add:"% load "|add:library.grouper|add:" %"|add:"}" %}To use these filters, put <code>{{ code }}</code> in your template before using the filter.{% endblocktrans %}</p><hr />{% endif %}
+ {% if library.grouper %}<p class="small quiet">{% blocktrans with code="{"|add:"% load "|add:library.grouper|add:" %"|add:"}" %}To use these filters, put <code>{{ code }}</code> in your template before using the filter.{% endblocktrans %}</p><hr>{% endif %}
{% for filter in library.list|dictsort:"name" %}
<h3 id="{{ library.grouper|default:"built_in" }}-{{ filter.name }}">{{ filter.name }}</h3>
{{ filter.title }}
{{ filter.body }}
- {% if not forloop.last %}<hr />{% endif %}
+ {% if not forloop.last %}<hr>{% endif %}
{% endfor %}
</div>
{% endfor %}
diff --git a/django/contrib/admindocs/templates/admin_doc/template_tag_index.html b/django/contrib/admindocs/templates/admin_doc/template_tag_index.html
index 6196985474..bb4f239147 100644
--- a/django/contrib/admindocs/templates/admin_doc/template_tag_index.html
+++ b/django/contrib/admindocs/templates/admin_doc/template_tag_index.html
@@ -20,12 +20,12 @@
{% for library in tag_libraries %}
<div class="module">
<h2>{% firstof library.grouper _("Built-in tags") %}</h2>
- {% if library.grouper %}<p class="small quiet">{% blocktrans with code="{"|add:"% load "|add:library.grouper|add:" %"|add:"}" %}To use these tags, put <code>{{ code }}</code> in your template before using the tag.{% endblocktrans %}</p><hr />{% endif %}
+ {% if library.grouper %}<p class="small quiet">{% blocktrans with code="{"|add:"% load "|add:library.grouper|add:" %"|add:"}" %}To use these tags, put <code>{{ code }}</code> in your template before using the tag.{% endblocktrans %}</p><hr>{% endif %}
{% for tag in library.list|dictsort:"name" %}
<h3 id="{{ library.grouper|default:"built_in" }}-{{ tag.name }}">{{ tag.name }}</h3>
<h4>{{ tag.title|striptags }}</h4>
{{ tag.body }}
- {% if not forloop.last %}<hr />{% endif %}
+ {% if not forloop.last %}<hr>{% endif %}
{% endfor %}
</div>
{% endfor %}
diff --git a/django/contrib/admindocs/templates/admin_doc/view_index.html b/django/contrib/admindocs/templates/admin_doc/view_index.html
index 16e48ca8dc..77b3e40b1d 100644
--- a/django/contrib/admindocs/templates/admin_doc/view_index.html
+++ b/django/contrib/admindocs/templates/admin_doc/view_index.html
@@ -50,7 +50,7 @@
View function: <code>{{ full_name }}</code>. Name: <code>{{ url_name }}</code>.
{% endblocktrans %}</p>
<p>{{ view.title }}</p>
-<hr />
+<hr>
{% endifchanged %}
{% endfor %}
</div>
diff --git a/django/forms/forms.py b/django/forms/forms.py
index 1be7814993..19d5778468 100644
--- a/django/forms/forms.py
+++ b/django/forms/forms.py
@@ -274,7 +274,7 @@ class BaseForm:
normal_row='<tr%(html_class_attr)s><th>%(label)s</th><td>%(errors)s%(field)s%(help_text)s</td></tr>',
error_row='<tr><td colspan="2">%s</td></tr>',
row_ender='</td></tr>',
- help_text_html='<br /><span class="helptext">%s</span>',
+ help_text_html='<br><span class="helptext">%s</span>',
errors_on_separate_row=False)
def as_ul(self):
diff --git a/django/forms/jinja2/django/forms/widgets/clearable_file_input.html b/django/forms/jinja2/django/forms/widgets/clearable_file_input.html
index 7248f32d2a..9e76435216 100644
--- a/django/forms/jinja2/django/forms/widgets/clearable_file_input.html
+++ b/django/forms/jinja2/django/forms/widgets/clearable_file_input.html
@@ -1,5 +1,5 @@
{% if widget.is_initial %}{{ widget.initial_text }}: <a href="{{ widget.value.url }}">{{ widget.value }}</a>{% if not widget.required %}
-<input type="checkbox" name="{{ widget.checkbox_name }}" id="{{ widget.checkbox_id }}" />
-<label for="{{ widget.checkbox_id }}">{{ widget.clear_checkbox_label }}</label>{% endif %}<br />
+<input type="checkbox" name="{{ widget.checkbox_name }}" id="{{ widget.checkbox_id }}">
+<label for="{{ widget.checkbox_id }}">{{ widget.clear_checkbox_label }}</label>{% endif %}<br>
{{ widget.input_text }}:{% endif %}
-<input type="{{ widget.type }}" name="{{ widget.name }}"{% include "django/forms/widgets/attrs.html" %} />
+<input type="{{ widget.type }}" name="{{ widget.name }}"{% include "django/forms/widgets/attrs.html" %}>
diff --git a/django/forms/jinja2/django/forms/widgets/input.html b/django/forms/jinja2/django/forms/widgets/input.html
index abbdf6bd26..d5651571f2 100644
--- a/django/forms/jinja2/django/forms/widgets/input.html
+++ b/django/forms/jinja2/django/forms/widgets/input.html
@@ -1 +1 @@
-<input type="{{ widget.type }}" name="{{ widget.name }}"{% if widget.value != None %} value="{{ widget.value }}"{% endif %}{% include "django/forms/widgets/attrs.html" %} />
+<input type="{{ widget.type }}" name="{{ widget.name }}"{% if widget.value != None %} value="{{ widget.value }}"{% endif %}{% include "django/forms/widgets/attrs.html" %}>
diff --git a/django/forms/templates/django/forms/widgets/clearable_file_input.html b/django/forms/templates/django/forms/widgets/clearable_file_input.html
index 7248f32d2a..9e76435216 100644
--- a/django/forms/templates/django/forms/widgets/clearable_file_input.html
+++ b/django/forms/templates/django/forms/widgets/clearable_file_input.html
@@ -1,5 +1,5 @@
{% if widget.is_initial %}{{ widget.initial_text }}: <a href="{{ widget.value.url }}">{{ widget.value }}</a>{% if not widget.required %}
-<input type="checkbox" name="{{ widget.checkbox_name }}" id="{{ widget.checkbox_id }}" />
-<label for="{{ widget.checkbox_id }}">{{ widget.clear_checkbox_label }}</label>{% endif %}<br />
+<input type="checkbox" name="{{ widget.checkbox_name }}" id="{{ widget.checkbox_id }}">
+<label for="{{ widget.checkbox_id }}">{{ widget.clear_checkbox_label }}</label>{% endif %}<br>
{{ widget.input_text }}:{% endif %}
-<input type="{{ widget.type }}" name="{{ widget.name }}"{% include "django/forms/widgets/attrs.html" %} />
+<input type="{{ widget.type }}" name="{{ widget.name }}"{% include "django/forms/widgets/attrs.html" %}>
diff --git a/django/forms/templates/django/forms/widgets/input.html b/django/forms/templates/django/forms/widgets/input.html
index 5feef43c55..9010a92145 100644
--- a/django/forms/templates/django/forms/widgets/input.html
+++ b/django/forms/templates/django/forms/widgets/input.html
@@ -1 +1 @@
-<input type="{{ widget.type }}" name="{{ widget.name }}"{% if widget.value != None %} value="{{ widget.value|stringformat:'s' }}"{% endif %}{% include "django/forms/widgets/attrs.html" %} />
+<input type="{{ widget.type }}" name="{{ widget.name }}"{% if widget.value != None %} value="{{ widget.value|stringformat:'s' }}"{% endif %}{% include "django/forms/widgets/attrs.html" %}>
diff --git a/django/forms/widgets.py b/django/forms/widgets.py
index 6ccbb86274..76c12e2dcb 100644
--- a/django/forms/widgets.py
+++ b/django/forms/widgets.py
@@ -74,7 +74,7 @@ class Media:
media = sorted(self._css)
return chain.from_iterable([
format_html(
- '<link href="{}" type="text/css" media="{}" rel="stylesheet" />',
+ '<link href="{}" type="text/css" media="{}" rel="stylesheet">',
self.absolute_path(path), medium
) for path in self._css[medium]
] for medium in media)
diff --git a/django/template/backends/utils.py b/django/template/backends/utils.py
index 8147bb4988..8d41213965 100644
--- a/django/template/backends/utils.py
+++ b/django/template/backends/utils.py
@@ -6,7 +6,7 @@ from django.utils.safestring import SafeText
def csrf_input(request):
return format_html(
- '<input type="hidden" name="csrfmiddlewaretoken" value="{}" />',
+ '<input type="hidden" name="csrfmiddlewaretoken" value="{}">',
get_token(request))
diff --git a/django/template/defaultfilters.py b/django/template/defaultfilters.py
index 5d7665d64e..e876c555f3 100644
--- a/django/template/defaultfilters.py
+++ b/django/template/defaultfilters.py
@@ -404,7 +404,7 @@ def force_escape(value):
def linebreaks_filter(value, autoescape=True):
"""
Replace line breaks in plain text with appropriate HTML; a single
- newline becomes an HTML line break (``<br />``) and a new line
+ newline becomes an HTML line break (``<br>``) and a new line
followed by a blank line becomes a paragraph break (``</p>``).
"""
autoescape = autoescape and not isinstance(value, SafeData)
@@ -416,13 +416,13 @@ def linebreaks_filter(value, autoescape=True):
def linebreaksbr(value, autoescape=True):
"""
Convert all newlines in a piece of plain text to HTML line breaks
- (``<br />``).
+ (``<br>``).
"""
autoescape = autoescape and not isinstance(value, SafeData)
value = normalize_newlines(value)
if autoescape:
value = escape(value)
- return mark_safe(value.replace('\n', '<br />'))
+ return mark_safe(value.replace('\n', '<br>'))
@register.filter(is_safe=True)
diff --git a/django/template/defaulttags.py b/django/template/defaulttags.py
index 6d8813b2fe..abb72fa13c 100644
--- a/django/template/defaulttags.py
+++ b/django/template/defaulttags.py
@@ -54,7 +54,7 @@ class CsrfTokenNode(Node):
if csrf_token == 'NOTPROVIDED':
return format_html("")
else:
- return format_html("<input type='hidden' name='csrfmiddlewaretoken' value='{}' />", csrf_token)
+ return format_html("<input type='hidden' name='csrfmiddlewaretoken' value='{}'>", csrf_token)
else:
# It's very probable that the token is missing because of
# misconfiguration, so we raise a warning
@@ -1408,7 +1408,7 @@ def widthratio(parser, token):
For example::
<img src="bar.png" alt="Bar"
- height="10" width="{% widthratio this_value max_value max_width %}" />
+ height="10" width="{% widthratio this_value max_value max_width %}">
If ``this_value`` is 175, ``max_value`` is 200, and ``max_width`` is 100,
the image in the above example will be 88 pixels wide
diff --git a/django/test/html.py b/django/test/html.py
index fdedafe76e..c01f73c1fb 100644
--- a/django/test/html.py
+++ b/django/test/html.py
@@ -118,7 +118,7 @@ class Element:
output += ''.join(str(c) for c in self.children)
output += '\n</%s>' % self.name
else:
- output += ' />'
+ output += '>'
return output
def __repr__(self):
diff --git a/django/utils/html.py b/django/utils/html.py
index 9c219ba1c6..e6389d4db5 100644
--- a/django/utils/html.py
+++ b/django/utils/html.py
@@ -124,13 +124,13 @@ def format_html_join(sep, format_string, args_generator):
@keep_lazy_text
def linebreaks(value, autoescape=False):
- """Convert newlines into <p> and <br />s."""
+ """Convert newlines into <p> and <br>s."""
value = normalize_newlines(value)
paras = re.split('\n{2,}', str(value))
if autoescape:
- paras = ['<p>%s</p>' % escape(p).replace('\n', '<br />') for p in paras]
+ paras = ['<p>%s</p>' % escape(p).replace('\n', '<br>') for p in paras]
else:
- paras = ['<p>%s</p>' % p.replace('\n', '<br />') for p in paras]
+ paras = ['<p>%s</p>' % p.replace('\n', '<br>') for p in paras]
return '\n\n'.join(paras)
diff --git a/django/views/static.py b/django/views/static.py
index c9d4b0317a..c93c136993 100644
--- a/django/views/static.py
+++ b/django/views/static.py
@@ -62,9 +62,9 @@ DEFAULT_DIRECTORY_INDEX_TEMPLATE = """
<!DOCTYPE html>
<html lang="en">
<head>
- <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
- <meta http-equiv="Content-Language" content="en-us" />
- <meta name="robots" content="NONE,NOARCHIVE" />
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <meta http-equiv="Content-Language" content="en-us">
+ <meta name="robots" content="NONE,NOARCHIVE">
<title>{% blocktrans %}Index of {{ directory }}{% endblocktrans %}</title>
</head>
<body>
diff --git a/docs/howto/static-files/index.txt b/docs/howto/static-files/index.txt
index 847e3c9c19..bff1a5daa1 100644
--- a/docs/howto/static-files/index.txt
+++ b/docs/howto/static-files/index.txt
@@ -30,7 +30,7 @@ Configuring static files
.. code-block:: html+django
{% load static %}
- <img src="{% static "my_app/example.jpg" %}" alt="My image"/>
+ <img src="{% static "my_app/example.jpg" %}" alt="My image">
4. Store your static files in a folder called ``static`` in your app. For
example ``my_app/static/my_app/example.jpg``.
diff --git a/docs/intro/contributing.txt b/docs/intro/contributing.txt
index 07d9aae379..ef44c81600 100644
--- a/docs/intro/contributing.txt
+++ b/docs/intro/contributing.txt
@@ -535,8 +535,8 @@ Use the arrow keys to move up and down.
+++ b/docs/ref/forms/api.txt
@@ -1065,3 +1065,13 @@ You can put several Django forms inside one ``<form>`` tag. To give each
>>> print(father.as_ul())
- <li><label for="id_father-first_name">First name:</label> <input type="text" name="father-first_name" id="id_father-first_name" /></li>
- <li><label for="id_father-last_name">Last name:</label> <input type="text" name="father-last_name" id="id_father-last_name" /></li>
+ <li><label for="id_father-first_name">First name:</label> <input type="text" name="father-first_name" id="id_father-first_name"></li>
+ <li><label for="id_father-last_name">Last name:</label> <input type="text" name="father-last_name" id="id_father-last_name"></li>
+
+The prefix can also be specified on the form class::
+
diff --git a/docs/intro/overview.txt b/docs/intro/overview.txt
index f6e34b0695..7cf17ba376 100644
--- a/docs/intro/overview.txt
+++ b/docs/intro/overview.txt
@@ -307,7 +307,7 @@ Here's what the "base.html" template, including the use of :doc:`static files
<title>{% block title %}{% endblock %}</title>
</head>
<body>
- <img src="{% static "images/sitelogo.png" %}" alt="Logo" />
+ <img src="{% static "images/sitelogo.png" %}" alt="Logo">
{% block content %}{% endblock %}
</body>
</html>
diff --git a/docs/intro/tutorial04.txt b/docs/intro/tutorial04.txt
index 6f685fc402..8e1f8d9aef 100644
--- a/docs/intro/tutorial04.txt
+++ b/docs/intro/tutorial04.txt
@@ -22,10 +22,10 @@ tutorial, so that the template contains an HTML ``<form>`` element:
<form action="{% url 'polls:vote' question.id %}" method="post">
{% csrf_token %}
{% for choice in question.choice_set.all %}
- <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}" />
- <label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br />
+ <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}">
+ <label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br>
{% endfor %}
- <input type="submit" value="Vote" />
+ <input type="submit" value="Vote">
</form>
A quick rundown:
diff --git a/docs/intro/tutorial06.txt b/docs/intro/tutorial06.txt
index 0d3dd23315..231ae315ee 100644
--- a/docs/intro/tutorial06.txt
+++ b/docs/intro/tutorial06.txt
@@ -70,7 +70,7 @@ Next, add the following at the top of ``polls/templates/polls/index.html``:
{% load static %}
- <link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}" />
+ <link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}">
The ``{% static %}`` template tag generates the absolute URL of static files.
diff --git a/docs/ref/class-based-views/generic-editing.txt b/docs/ref/class-based-views/generic-editing.txt
index 65cd772536..8c1fe0f758 100644
--- a/docs/ref/class-based-views/generic-editing.txt
+++ b/docs/ref/class-based-views/generic-editing.txt
@@ -76,7 +76,7 @@ editing content:
<form action="" method="post">{% csrf_token %}
{{ form.as_p }}
- <input type="submit" value="Send message" />
+ <input type="submit" value="Send message">
</form>
@@ -132,7 +132,7 @@ editing content:
<form action="" method="post">{% csrf_token %}
{{ form.as_p }}
- <input type="submit" value="Save" />
+ <input type="submit" value="Save">
</form>
``UpdateView``
@@ -189,7 +189,7 @@ editing content:
<form action="" method="post">{% csrf_token %}
{{ form.as_p }}
- <input type="submit" value="Update" />
+ <input type="submit" value="Update">
</form>
``DeleteView``
@@ -240,5 +240,5 @@ editing content:
<form action="" method="post">{% csrf_token %}
<p>Are you sure you want to delete "{{ object }}"?</p>
- <input type="submit" value="Confirm" />
+ <input type="submit" value="Confirm">
</form>
diff --git a/docs/ref/contrib/admin/index.txt b/docs/ref/contrib/admin/index.txt
index c043561f17..39c02f26af 100644
--- a/docs/ref/contrib/admin/index.txt
+++ b/docs/ref/contrib/admin/index.txt
@@ -1180,7 +1180,7 @@ subclass::
# for each line of the address and you want to separate each
# line by a linebreak
return format_html_join(
- mark_safe('<br/>'),
+ mark_safe('<br>'),
'{}',
((line,) for line in instance.get_full_address()),
) or mark_safe("<span class='errors'>I can't determine this address.</span>")
diff --git a/docs/ref/forms/api.txt b/docs/ref/forms/api.txt
index 5e001a2f62..bafa688f98 100644
--- a/docs/ref/forms/api.txt
+++ b/docs/ref/forms/api.txt
@@ -255,9 +255,9 @@ precedence::
... comment = forms.CharField()
>>> f = CommentForm(initial={'name': 'instance'}, auto_id=False)
>>> print(f)
- <tr><th>Name:</th><td><input type="text" name="name" value="instance" required /></td></tr>
- <tr><th>Url:</th><td><input type="url" name="url" required /></td></tr>
- <tr><th>Comment:</th><td><input type="text" name="comment" required /></td></tr>
+ <tr><th>Name:</th><td><input type="text" name="name" value="instance" required></td></tr>
+ <tr><th>Url:</th><td><input type="url" name="url" required></td></tr>
+ <tr><th>Comment:</th><td><input type="text" name="comment" required></td></tr>
.. method:: Form.get_initial_for_field(field, field_name)
@@ -322,10 +322,10 @@ You can alter the field of :class:`Form` instance to change the way it is
presented in the form::
>>> f.as_table().split('\n')[0]
- '<tr><th>Name:</th><td><input name="name" type="text" value="instance" required /></td></tr>'
+ '<tr><th>Name:</th><td><input name="name" type="text" value="instance" required></td></tr>'
>>> f.fields['name'].label = "Username"
>>> f.as_table().split('\n')[0]
- '<tr><th>Username:</th><td><input name="name" type="text" value="instance" required /></td></tr>'
+ '<tr><th>Username:</th><td><input name="name" type="text" value="instance" required></td></tr>'
Beware not to alter the ``base_fields`` attribute because this modification
will influence all subsequent ``ContactForm`` instances within the same Python
@@ -334,7 +334,7 @@ process::
>>> f.base_fields['name'].label = "Username"
>>> another_f = CommentForm(auto_id=False)
>>> another_f.as_table().split('\n')[0]
- '<tr><th>Username:</th><td><input name="name" type="text" value="class" required /></td></tr>'
+ '<tr><th>Username:</th><td><input name="name" type="text" value="class" required></td></tr>'
Accessing "clean" data
======================
@@ -438,10 +438,10 @@ simply ``print`` it::
>>> f = ContactForm()
>>> print(f)
- <tr><th><label for="id_subject">Subject:</label></th><td><input id="id_subject" type="text" name="subject" maxlength="100" required /></td></tr>
- <tr><th><label for="id_message">Message:</label></th><td><input type="text" name="message" id="id_message" required /></td></tr>
- <tr><th><label for="id_sender">Sender:</label></th><td><input type="email" name="sender" id="id_sender" required /></td></tr>
- <tr><th><label for="id_cc_myself">Cc myself:</label></th><td><input type="checkbox" name="cc_myself" id="id_cc_myself" /></td></tr>
+ <tr><th><label for="id_subject">Subject:</label></th><td><input id="id_subject" type="text" name="subject" maxlength="100" required></td></tr>
+ <tr><th><label for="id_message">Message:</label></th><td><input type="text" name="message" id="id_message" required></td></tr>
+ <tr><th><label for="id_sender">Sender:</label></th><td><input type="email" name="sender" id="id_sender" required></td></tr>
+ <tr><th><label for="id_cc_myself">Cc myself:</label></th><td><input type="checkbox" name="cc_myself" id="id_cc_myself"></td></tr>
If the form is bound to data, the HTML output will include that data
appropriately. For example, if a field is represented by an
@@ -455,10 +455,10 @@ include ``checked`` if appropriate::
... 'cc_myself': True}
>>> f = ContactForm(data)
>>> print(f)
- <tr><th><label for="id_subject">Subject:</label></th><td><input id="id_subject" type="text" name="subject" maxlength="100" value="hello" required /></td></tr>
- <tr><th><label for="id_message">Message:</label></th><td><input type="text" name="message" id="id_message" value="Hi there" required /></td></tr>
- <tr><th><label for="id_sender">Sender:</label></th><td><input type="email" name="sender" id="id_sender" value="foo@example.com" required /></td></tr>
- <tr><th><label for="id_cc_myself">Cc myself:</label></th><td><input type="checkbox" name="cc_myself" id="id_cc_myself" checked /></td></tr>
+ <tr><th><label for="id_subject">Subject:</label></th><td><input id="id_subject" type="text" name="subject" maxlength="100" value="hello" required></td></tr>
+ <tr><th><label for="id_message">Message:</label></th><td><input type="text" name="message" id="id_message" value="Hi there" required></td></tr>
+ <tr><th><label for="id_sender">Sender:</label></th><td><input type="email" name="sender" id="id_sender" value="foo@example.com" required></td></tr>
+ <tr><th><label for="id_cc_myself">Cc myself:</label></th><td><input type="checkbox" name="cc_myself" id="id_cc_myself" checked></td></tr>
This default output is a two-column HTML table, with a ``<tr>`` for each field.
Notice the following:
@@ -506,12 +506,12 @@ containing one field::
>>> f = ContactForm()
>>> f.as_p()
- '<p><label for="id_subject">Subject:</label> <input id="id_subject" type="text" name="subject" maxlength="100" required /></p>\n<p><label for="id_message">Message:</label> <input type="text" name="message" id="id_message" required /></p>\n<p><label for="id_sender">Sender:</label> <input type="text" name="sender" id="id_sender" required /></p>\n<p><label for="id_cc_myself">Cc myself:</label> <input type="checkbox" name="cc_myself" id="id_cc_myself" /></p>'
+ '<p><label for="id_subject">Subject:</label> <input id="id_subject" type="text" name="subject" maxlength="100" required></p>\n<p><label for="id_message">Message:</label> <input type="text" name="message" id="id_message" required></p>\n<p><label for="id_sender">Sender:</label> <input type="text" name="sender" id="id_sender" required></p>\n<p><label for="id_cc_myself">Cc myself:</label> <input type="checkbox" name="cc_myself" id="id_cc_myself"></p>'
>>> print(f.as_p())
- <p><label for="id_subject">Subject:</label> <input id="id_subject" type="text" name="subject" maxlength="100" required /></p>
- <p><label for="id_message">Message:</label> <input type="text" name="message" id="id_message" required /></p>
- <p><label for="id_sender">Sender:</label> <input type="email" name="sender" id="id_sender" required /></p>
- <p><label for="id_cc_myself">Cc myself:</label> <input type="checkbox" name="cc_myself" id="id_cc_myself" /></p>
+ <p><label for="id_subject">Subject:</label> <input id="id_subject" type="text" name="subject" maxlength="100" required></p>
+ <p><label for="id_message">Message:</label> <input type="text" name="message" id="id_message" required></p>
+ <p><label for="id_sender">Sender:</label> <input type="email" name="sender" id="id_sender" required></p>
+ <p><label for="id_cc_myself">Cc myself:</label> <input type="checkbox" name="cc_myself" id="id_cc_myself"></p>
``as_ul()``
-----------
@@ -525,12 +525,12 @@ flexibility::
>>> f = ContactForm()
>>> f.as_ul()
- '<li><label for="id_subject">Subject:</label> <input id="id_subject" type="text" name="subject" maxlength="100" required /></li>\n<li><label for="id_message">Message:</label> <input type="text" name="message" id="id_message" required /></li>\n<li><label for="id_sender">Sender:</label> <input type="email" name="sender" id="id_sender" required /></li>\n<li><label for="id_cc_myself">Cc myself:</label> <input type="checkbox" name="cc_myself" id="id_cc_myself" /></li>'
+ '<li><label for="id_subject">Subject:</label> <input id="id_subject" type="text" name="subject" maxlength="100" required></li>\n<li><label for="id_message">Message:</label> <input type="text" name="message" id="id_message" required></li>\n<li><label for="id_sender">Sender:</label> <input type="email" name="sender" id="id_sender" required></li>\n<li><label for="id_cc_myself">Cc myself:</label> <input type="checkbox" name="cc_myself" id="id_cc_myself"></li>'
>>> print(f.as_ul())
- <li><label for="id_subject">Subject:</label> <input id="id_subject" type="text" name="subject" maxlength="100" required /></li>
- <li><label for="id_message">Message:</label> <input type="text" name="message" id="id_message" required /></li>
- <li><label for="id_sender">Sender:</label> <input type="email" name="sender" id="id_sender" required /></li>
- <li><label for="id_cc_myself">Cc myself:</label> <input type="checkbox" name="cc_myself" id="id_cc_myself" /></li>
+ <li><label for="id_subject">Subject:</label> <input id="id_subject" type="text" name="subject" maxlength="100" required></li>
+ <li><label for="id_message">Message:</label> <input type="text" name="message" id="id_message" required></li>
+ <li><label for="id_sender">Sender:</label> <input type="email" name="sender" id="id_sender" required></li>
+ <li><label for="id_cc_myself">Cc myself:</label> <input type="checkbox" name="cc_myself" id="id_cc_myself"></li>
``as_table()``
--------------
@@ -543,12 +543,12 @@ it calls its ``as_table()`` method behind the scenes::
>>> f = ContactForm()
>>> f.as_table()
- '<tr><th><label for="id_subject">Subject:</label></th><td><input id="id_subject" type="text" name="subject" maxlength="100" required /></td></tr>\n<tr><th><label for="id_message">Message:</label></th><td><input type="text" name="message" id="id_message" required /></td></tr>\n<tr><th><label for="id_sender">Sender:</label></th><td><input type="email" name="sender" id="id_sender" required /></td></tr>\n<tr><th><label for="id_cc_myself">Cc myself:</label></th><td><input type="checkbox" name="cc_myself" id="id_cc_myself" /></td></tr>'
+ '<tr><th><label for="id_subject">Subject:</label></th><td><input id="id_subject" type="text" name="subject" maxlength="100" required></td></tr>\n<tr><th><label for="id_message">Message:</label></th><td><input type="text" name="message" id="id_message" required></td></tr>\n<tr><th><label for="id_sender">Sender:</label></th><td><input type="email" name="sender" id="id_sender" required></td></tr>\n<tr><th><label for="id_cc_myself">Cc myself:</label></th><td><input type="checkbox" name="cc_myself" id="id_cc_myself"></td></tr>'
>>> print(f)
- <tr><th><label for="id_subject">Subject:</label></th><td><input id="id_subject" type="text" name="subject" maxlength="100" required /></td></tr>
- <tr><th><label for="id_message">Message:</label></th><td><input type="text" name="message" id="id_message" required /></td></tr>
- <tr><th><label for="id_sender">Sender:</label></th><td><input type="email" name="sender" id="id_sender" required /></td></tr>
- <tr><th><label for="id_cc_myself">Cc myself:</label></th><td><input type="checkbox" name="cc_myself" id="id_cc_myself" /></td></tr>
+ <tr><th><label for="id_subject">Subject:</label></th><td><input id="id_subject" type="text" name="subject" maxlength="100" required></td></tr>
+ <tr><th><label for="id_message">Message:</label></th><td><input type="text" name="message" id="id_message" required></td></tr>
+ <tr><th><label for="id_sender">Sender:</label></th><td><input type="email" name="sender" id="id_sender" required></td></tr>
+ <tr><th><label for="id_cc_myself">Cc myself:</label></th><td><input type="checkbox" name="cc_myself" id="id_cc_myself"></td></tr>
.. _ref-forms-api-styling-form-rows:
@@ -618,20 +618,20 @@ tags nor ``id`` attributes::
>>> f = ContactForm(auto_id=False)
>>> print(f.as_table())
- <tr><th>Subject:</th><td><input type="text" name="subject" maxlength="100" required /></td></tr>
- <tr><th>Message:</th><td><input type="text" name="message" required /></td></tr>
- <tr><th>Sender:</th><td><input type="email" name="sender" required /></td></tr>
- <tr><th>Cc myself:</th><td><input type="checkbox" name="cc_myself" /></td></tr>
+ <tr><th>Subject:</th><td><input type="text" name="subject" maxlength="100" required></td></tr>
+ <tr><th>Message:</th><td><input type="text" name="message" required></td></tr>
+ <tr><th>Sender:</th><td><input type="email" name="sender" required></td></tr>
+ <tr><th>Cc myself:</th><td><input type="checkbox" name="cc_myself"></td></tr>
>>> print(f.as_ul())
- <li>Subject: <input type="text" name="subject" maxlength="100" required /></li>
- <li>Message: <input type="text" name="message" required /></li>
- <li>Sender: <input type="email" name="sender" required /></li>
- <li>Cc myself: <input type="checkbox" name="cc_myself" /></li>
+ <li>Subject: <input type="text" name="subject" maxlength="100" required></li>
+ <li>Message: <input type="text" name="message" required></li>
+ <li>Sender: <input type="email" name="sender" required></li>
+ <li>Cc myself: <input type="checkbox" name="cc_myself"></li>
>>> print(f.as_p())
- <p>Subject: <input type="text" name="subject" maxlength="100" required /></p>
- <p>Message: <input type="text" name="message" required /></p>
- <p>Sender: <input type="email" name="sender" required /></p>
- <p>Cc myself: <input type="checkbox" name="cc_myself" /></p>
+ <p>Subject: <input type="text" name="subject" maxlength="100" required></p>
+ <p>Message: <input type="text" name="message" required></p>
+ <p>Sender: <input type="email" name="sender" required></p>
+ <p>Cc myself: <input type="checkbox" name="cc_myself"></p>
If ``auto_id`` is set to ``True``, then the form output *will* include
``<label>`` tags and will simply use the field name as its ``id`` for each form
@@ -639,20 +639,20 @@ field::
>>> f = ContactForm(auto_id=True)
>>> print(f.as_table())
- <tr><th><label for="subject">Subject:</label></th><td><input id="subject" type="text" name="subject" maxlength="100" required /></td></tr>
- <tr><th><label for="message">Message:</label></th><td><input type="text" name="message" id="message" required /></td></tr>
- <tr><th><label for="sender">Sender:</label></th><td><input type="email" name="sender" id="sender" required /></td></tr>
- <tr><th><label for="cc_myself">Cc myself:</label></th><td><input type="checkbox" name="cc_myself" id="cc_myself" /></td></tr>
+ <tr><th><label for="subject">Subject:</label></th><td><input id="subject" type="text" name="subject" maxlength="100" required></td></tr>
+ <tr><th><label for="message">Message:</label></th><td><input type="text" name="message" id="message" required></td></tr>
+ <tr><th><label for="sender">Sender:</label></th><td><input type="email" name="sender" id="sender" required></td></tr>
+ <tr><th><label for="cc_myself">Cc myself:</label></th><td><input type="checkbox" name="cc_myself" id="cc_myself"></td></tr>
>>> print(f.as_ul())
- <li><label for="subject">Subject:</label> <input id="subject" type="text" name="subject" maxlength="100" required /></li>
- <li><label for="message">Message:</label> <input type="text" name="message" id="message" required /></li>
- <li><label for="sender">Sender:</label> <input type="email" name="sender" id="sender" required /></li>
- <li><label for="cc_myself">Cc myself:</label> <input type="checkbox" name="cc_myself" id="cc_myself" /></li>
+ <li><label for="subject">Subject:</label> <input id="subject" type="text" name="subject" maxlength="100" required></li>
+ <li><label for="message">Message:</label> <input type="text" name="message" id="message" required></li>
+ <li><label for="sender">Sender:</label> <input type="email" name="sender" id="sender" required></li>
+ <li><label for="cc_myself">Cc myself:</label> <input type="checkbox" name="cc_myself" id="cc_myself"></li>
>>> print(f.as_p())
- <p><label for="subject">Subject:</label> <input id="subject" type="text" name="subject" maxlength="100" required /></p>
- <p><label for="message">Message:</label> <input type="text" name="message" id="message" required /></p>
- <p><label for="sender">Sender:</label> <input type="email" name="sender" id="sender" required /></p>
- <p><label for="cc_myself">Cc myself:</label> <input type="checkbox" name="cc_myself" id="cc_myself" /></p>
+ <p><label for="subject">Subject:</label> <input id="subject" type="text" name="subject" maxlength="100" required></p>
+ <p><label for="message">Message:</label> <input type="text" name="message" id="message" required></p>
+ <p><label for="sender">Sender:</label> <input type="email" name="sender" id="sender" required></p>
+ <p><label for="cc_myself">Cc myself:</label> <input type="checkbox" name="cc_myself" id="cc_myself"></p>
If ``auto_id`` is set to a string containing the format character ``'%s'``,
then the form output will include ``<label>`` tags, and will generate ``id``
@@ -662,20 +662,20 @@ attributes based on the format string. For example, for a format string
>>> f = ContactForm(auto_id='id_for_%s')
>>> print(f.as_table())
- <tr><th><label for="id_for_subject">Subject:</label></th><td><input id="id_for_subject" type="text" name="subject" maxlength="100" required /></td></tr>
- <tr><th><label for="id_for_message">Message:</label></th><td><input type="text" name="message" id="id_for_message" required /></td></tr>
- <tr><th><label for="id_for_sender">Sender:</label></th><td><input type="email" name="sender" id="id_for_sender" required /></td></tr>
- <tr><th><label for="id_for_cc_myself">Cc myself:</label></th><td><input type="checkbox" name="cc_myself" id="id_for_cc_myself" /></td></tr>
+ <tr><th><label for="id_for_subject">Subject:</label></th><td><input id="id_for_subject" type="text" name="subject" maxlength="100" required></td></tr>
+ <tr><th><label for="id_for_message">Message:</label></th><td><input type="text" name="message" id="id_for_message" required></td></tr>
+ <tr><th><label for="id_for_sender">Sender:</label></th><td><input type="email" name="sender" id="id_for_sender" required></td></tr>
+ <tr><th><label for="id_for_cc_myself">Cc myself:</label></th><td><input type="checkbox" name="cc_myself" id="id_for_cc_myself"></td></tr>
>>> print(f.as_ul())
- <li><label for="id_for_subject">Subject:</label> <input id="id_for_subject" type="text" name="subject" maxlength="100" required /></li>
- <li><label for="id_for_message">Message:</label> <input type="text" name="message" id="id_for_message" required /></li>
- <li><label for="id_for_sender">Sender:</label> <input type="email" name="sender" id="id_for_sender" required /></li>
- <li><label for="id_for_cc_myself">Cc myself:</label> <input type="checkbox" name="cc_myself" id="id_for_cc_myself" /></li>
+ <li><label for="id_for_subject">Subject:</label> <input id="id_for_subject" type="text" name="subject" maxlength="100" required></li>
+ <li><label for="id_for_message">Message:</label> <input type="text" name="message" id="id_for_message" required></li>
+ <li><label for="id_for_sender">Sender:</label> <input type="email" name="sender" id="id_for_sender" required></li>
+ <li><label for="id_for_cc_myself">Cc myself:</label> <input type="checkbox" name="cc_myself" id="id_for_cc_myself"></li>
>>> print(f.as_p())
- <p><label for="id_for_subject">Subject:</label> <input id="id_for_subject" type="text" name="subject" maxlength="100" required /></p>
- <p><label for="id_for_message">Message:</label> <input type="text" name="message" id="id_for_message" required /></p>
- <p><label for="id_for_sender">Sender:</label> <input type="email" name="sender" id="id_for_sender" required /></p>
- <p><label for="id_for_cc_myself">Cc myself:</label> <input type="checkbox" name="cc_myself" id="id_for_cc_myself" /></p>
+ <p><label for="id_for_subject">Subject:</label> <input id="id_for_subject" type="text" name="subject" maxlength="100" required></p>
+ <p><label for="id_for_message">Message:</label> <input type="text" name="message" id="id_for_message" required></p>
+ <p><label for="id_for_sender">Sender:</label> <input type="email" name="sender" id="id_for_sender" required></p>
+ <p><label for="id_for_cc_myself">Cc myself:</label> <input type="checkbox" name="cc_myself" id="id_for_cc_myself"></p>
If ``auto_id`` is set to any other true value -- such as a string that doesn't
include ``%s`` -- then the library will act as if ``auto_id`` is ``True``.
@@ -692,16 +692,16 @@ It's possible to customize that character, or omit it entirely, using the
>>> f = ContactForm(auto_id='id_for_%s', label_suffix='')
>>> print(f.as_ul())
- <li><label for="id_for_subject">Subject</label> <input id="id_for_subject" type="text" name="subject" maxlength="100" required /></li>
- <li><label for="id_for_message">Message</label> <input type="text" name="message" id="id_for_message" required /></li>
- <li><label for="id_for_sender">Sender</label> <input type="email" name="sender" id="id_for_sender" required /></li>
- <li><label for="id_for_cc_myself">Cc myself</label> <input type="checkbox" name="cc_myself" id="id_for_cc_myself" /></li>
+ <li><label for="id_for_subject">Subject</label> <input id="id_for_subject" type="text" name="subject" maxlength="100" required></li>
+ <li><label for="id_for_message">Message</label> <input type="text" name="message" id="id_for_message" required></li>
+ <li><label for="id_for_sender">Sender</label> <input type="email" name="sender" id="id_for_sender" required></li>
+ <li><label for="id_for_cc_myself">Cc myself</label> <input type="checkbox" name="cc_myself" id="id_for_cc_myself"></li>
>>> f = ContactForm(auto_id='id_for_%s', label_suffix=' ->')
>>> print(f.as_ul())
- <li><label for="id_for_subject">Subject -></label> <input id="id_for_subject" type="text" name="subject" maxlength="100" required /></li>
- <li><label for="id_for_message">Message -></label> <input type="text" name="message" id="id_for_message" required /></li>
- <li><label for="id_for_sender">Sender -></label> <input type="email" name="sender" id="id_for_sender" required /></li>
- <li><label for="id_for_cc_myself">Cc myself -></label> <input type="checkbox" name="cc_myself" id="id_for_cc_myself" /></li>
+ <li><label for="id_for_subject">Subject -></label> <input id="id_for_subject" type="text" name="subject" maxlength="100" required></li>
+ <li><label for="id_for_message">Message -></label> <input type="text" name="message" id="id_for_message" required></li>
+ <li><label for="id_for_sender">Sender -></label> <input type="email" name="sender" id="id_for_sender" required></li>
+ <li><label for="id_for_cc_myself">Cc myself -></label> <input type="checkbox" name="cc_myself" id="id_for_cc_myself"></li>
Note that the label suffix is added only if the last character of the
label isn't a punctuation character (in English, those are ``.``, ``!``, ``?``
@@ -788,22 +788,22 @@ method you're using::
... 'cc_myself': True}
>>> f = ContactForm(data, auto_id=False)
>>> print(f.as_table())
- <tr><th>Subject:</th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="text" name="subject" maxlength="100" required /></td></tr>
- <tr><th>Message:</th><td><input type="text" name="message" value="Hi there" required /></td></tr>
- <tr><th>Sender:</th><td><ul class="errorlist"><li>Enter a valid email address.</li></ul><input type="email" name="sender" value="invalid email address" required /></td></tr>
- <tr><th>Cc myself:</th><td><input checked type="checkbox" name="cc_myself" /></td></tr>
+ <tr><th>Subject:</th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="text" name="subject" maxlength="100" required></td></tr>
+ <tr><th>Message:</th><td><input type="text" name="message" value="Hi there" required></td></tr>
+ <tr><th>Sender:</th><td><ul class="errorlist"><li>Enter a valid email address.</li></ul><input type="email" name="sender" value="invalid email address" required></td></tr>
+ <tr><th>Cc myself:</th><td><input checked type="checkbox" name="cc_myself"></td></tr>
>>> print(f.as_ul())
- <li><ul class="errorlist"><li>This field is required.</li></ul>Subject: <input type="text" name="subject" maxlength="100" required /></li>
- <li>Message: <input type="text" name="message" value="Hi there" required /></li>
- <li><ul class="errorlist"><li>Enter a valid email address.</li></ul>Sender: <input type="email" name="sender" value="invalid email address" required /></li>
- <li>Cc myself: <input checked type="checkbox" name="cc_myself" /></li>
+ <li><ul class="errorlist"><li>This field is required.</li></ul>Subject: <input type="text" name="subject" maxlength="100" required></li>
+ <li>Message: <input type="text" name="message" value="Hi there" required></li>
+ <li><ul class="errorlist"><li>Enter a valid email address.</li></ul>Sender: <input type="email" name="sender" value="invalid email address" required></li>
+ <li>Cc myself: <input checked type="checkbox" name="cc_myself"></li>
>>> print(f.as_p())
<p><ul class="errorlist"><li>This field is required.</li></ul></p>
- <p>Subject: <input type="text" name="subject" maxlength="100" required /></p>
- <p>Message: <input type="text" name="message" value="Hi there" required /></p>
+ <p>Subject: <input type="text" name="subject" maxlength="100" required></p>
+ <p>Message: <input type="text" name="message" value="Hi there" required></p>
<p><ul class="errorlist"><li>Enter a valid email address.</li></ul></p>
- <p>Sender: <input type="email" name="sender" value="invalid email address" required /></p>
- <p>Cc myself: <input checked type="checkbox" name="cc_myself" /></p>
+ <p>Sender: <input type="email" name="sender" value="invalid email address" required></p>
+ <p>Cc myself: <input checked type="checkbox" name="cc_myself"></p>
.. _ref-forms-error-list-format:
@@ -824,11 +824,11 @@ pass that in at construction time::
>>> f = ContactForm(data, auto_id=False, error_class=DivErrorList)
>>> f.as_p()
<div class="errorlist"><div class="error">This field is required.</div></div>
- <p>Subject: <input type="text" name="subject" maxlength="100" required /></p>
- <p>Message: <input type="text" name="message" value="Hi there" required /></p>
+ <p>Subject: <input type="text" name="subject" maxlength="100" required></p>
+ <p>Message: <input type="text" name="message" value="Hi there" required></p>
<div class="errorlist"><div class="error">Enter a valid email address.</div></div>
- <p>Sender: <input type="email" name="sender" value="invalid email address" required /></p>
- <p>Cc myself: <input checked type="checkbox" name="cc_myself" /></p>
+ <p>Sender: <input type="email" name="sender" value="invalid email address" required></p>
+ <p>Cc myself: <input checked type="checkbox" name="cc_myself"></p>
More granular output
====================
@@ -848,25 +848,25 @@ using the field's name as the key::
>>> form = ContactForm()
>>> print(form['subject'])
- <input id="id_subject" type="text" name="subject" maxlength="100" required />
+ <input id="id_subject" type="text" name="subject" maxlength="100" required>
To retrieve all ``BoundField`` objects, iterate the form::
>>> form = ContactForm()
>>> for boundfield in form: print(boundfield)
- <input id="id_subject" type="text" name="subject" maxlength="100" required />
- <input type="text" name="message" id="id_message" required />
- <input type="email" name="sender" id="id_sender" required />
- <input type="checkbox" name="cc_myself" id="id_cc_myself" />
+ <input id="id_subject" type="text" name="subject" maxlength="100" required>
+ <input type="text" name="message" id="id_message" required>
+ <input type="email" name="sender" id="id_sender" required>
+ <input type="checkbox" name="cc_myself" id="id_cc_myself">
The field-specific output honors the form object's ``auto_id`` setting::
>>> f = ContactForm(auto_id=False)
>>> print(f['message'])
- <input type="text" name="message" required />
+ <input type="text" name="message" required>
>>> f = ContactForm(auto_id='id_%s')
>>> print(f['message'])
- <input type="text" name="message" id="id_message" required />
+ <input type="text" name="message" id="id_message" required>
Attributes of ``BoundField``
----------------------------
@@ -897,7 +897,7 @@ Attributes of ``BoundField``
>>> data = {'subject': 'hi', 'message': '', 'sender': '', 'cc_myself': ''}
>>> f = ContactForm(data, auto_id=False)
>>> print(f['message'])
- <input type="text" name="message" required />
+ <input type="text" name="message" required>
>>> f['message'].errors
['This field is required.']
>>> print(f['message'].errors)
@@ -949,7 +949,7 @@ Attributes of ``BoundField``
.. code-block:: html
- <label for="myFIELD">...</label><input id="myFIELD" type="text" name="my_field" required />
+ <label for="myFIELD">...</label><input id="myFIELD" type="text" name="my_field" required>
.. attribute:: BoundField.is_hidden
@@ -1168,11 +1168,11 @@ fields are ordered first::
... priority = forms.CharField()
>>> f = ContactFormWithPriority(auto_id=False)
>>> print(f.as_ul())
- <li>Subject: <input type="text" name="subject" maxlength="100" required /></li>
- <li>Message: <input type="text" name="message" required /></li>
- <li>Sender: <input type="email" name="sender" required /></li>
- <li>Cc myself: <input type="checkbox" name="cc_myself" /></li>
- <li>Priority: <input type="text" name="priority" required /></li>
+ <li>Subject: <input type="text" name="subject" maxlength="100" required></li>
+ <li>Message: <input type="text" name="message" required></li>
+ <li>Sender: <input type="email" name="sender" required></li>
+ <li>Cc myself: <input type="checkbox" name="cc_myself"></li>
+ <li>Priority: <input type="text" name="priority" required></li>
It's possible to subclass multiple forms, treating forms as mixins. In this
example, ``BeatleForm`` subclasses both ``PersonForm`` and ``InstrumentForm``
@@ -1189,10 +1189,10 @@ classes::
... haircut_type = forms.CharField()
>>> b = BeatleForm(auto_id=False)
>>> print(b.as_ul())
- <li>First name: <input type="text" name="first_name" required /></li>
- <li>Last name: <input type="text" name="last_name" required /></li>
- <li>Instrument: <input type="text" name="instrument" required /></li>
- <li>Haircut type: <input type="text" name="haircut_type" required /></li>
+ <li>First name: <input type="text" name="first_name" required></li>
+ <li>Last name: <input type="text" name="last_name" required></li>
+ <li>Instrument: <input type="text" name="instrument" required></li>
+ <li>Haircut type: <input type="text" name="haircut_type" required></li>
It's possible to declaratively remove a ``Field`` inherited from a parent class
by setting the name of the field to ``None`` on the subclass. For example::
@@ -1222,11 +1222,11 @@ You can put several Django forms inside one ``<form>`` tag. To give each
>>> mother = PersonForm(prefix="mother")
>>> father = PersonForm(prefix="father")
>>> print(mother.as_ul())
- <li><label for="id_mother-first_name">First name:</label> <input type="text" name="mother-first_name" id="id_mother-first_name" required /></li>
- <li><label for="id_mother-last_name">Last name:</label> <input type="text" name="mother-last_name" id="id_mother-last_name" required /></li>
+ <li><label for="id_mother-first_name">First name:</label> <input type="text" name="mother-first_name" id="id_mother-first_name" required></li>
+ <li><label for="id_mother-last_name">Last name:</label> <input type="text" name="mother-last_name" id="id_mother-last_name" required></li>
>>> print(father.as_ul())
- <li><label for="id_father-first_name">First name:</label> <input type="text" name="father-first_name" id="id_father-first_name" required /></li>
- <li><label for="id_father-last_name">Last name:</label> <input type="text" name="father-last_name" id="id_father-last_name" required /></li>
+ <li><label for="id_father-first_name">First name:</label> <input type="text" name="father-first_name" id="id_father-first_name" required></li>
+ <li><label for="id_father-last_name">Last name:</label> <input type="text" name="father-last_name" id="id_father-last_name" required></li>
The prefix can also be specified on the form class::
diff --git a/docs/ref/forms/fields.txt b/docs/ref/forms/fields.txt
index 6c24c3534e..65a231d8e2 100644
--- a/docs/ref/forms/fields.txt
+++ b/docs/ref/forms/fields.txt
@@ -119,9 +119,9 @@ We've specified ``auto_id=False`` to simplify the output::
... comment = forms.CharField()
>>> f = CommentForm(auto_id=False)
>>> print(f)
- <tr><th>Your name:</th><td><input type="text" name="name" required /></td></tr>
- <tr><th>Your website:</th><td><input type="url" name="url" /></td></tr>
- <tr><th>Comment:</th><td><input type="text" name="comment" required /></td></tr>
+ <tr><th>Your name:</th><td><input type="text" name="name" required></td></tr>
+ <tr><th>Your website:</th><td><input type="url" name="url"></td></tr>
+ <tr><th>Comment:</th><td><input type="text" name="comment" required></td></tr>
``label_suffix``
----------------
@@ -137,9 +137,9 @@ The ``label_suffix`` argument lets you override the form's
... captcha_answer = forms.IntegerField(label='2 + 2', label_suffix=' =')
>>> f = ContactForm(label_suffix='?')
>>> print(f.as_p())
- <p><label for="id_age">Age?</label> <input id="id_age" name="age" type="number" required /></p>
- <p><label for="id_nationality">Nationality?</label> <input id="id_nationality" name="nationality" type="text" required /></p>
- <p><label for="id_captcha_answer">2 + 2 =</label> <input id="id_captcha_answer" name="captcha_answer" type="number" required /></p>
+ <p><label for="id_age">Age?</label> <input id="id_age" name="age" type="number" required></p>
+ <p><label for="id_nationality">Nationality?</label> <input id="id_nationality" name="nationality" type="text" required></p>
+ <p><label for="id_captcha_answer">2 + 2 =</label> <input id="id_captcha_answer" name="captcha_answer" type="number" required></p>
``initial``
-----------
@@ -161,9 +161,9 @@ field is initialized to a particular value. For example::
... comment = forms.CharField()
>>> f = CommentForm(auto_id=False)
>>> print(f)
- <tr><th>Name:</th><td><input type="text" name="name" value="Your name" required /></td></tr>
- <tr><th>Url:</th><td><input type="url" name="url" value="http://" required /></td></tr>
- <tr><th>Comment:</th><td><input type="text" name="comment" required /></td></tr>
+ <tr><th>Name:</th><td><input type="text" name="name" value="Your name" required></td></tr>
+ <tr><th>Url:</th><td><input type="url" name="url" value="http://" required></td></tr>
+ <tr><th>Comment:</th><td><input type="text" name="comment" required></td></tr>
You may be thinking, why not just pass a dictionary of the initial values as
data when displaying the form? Well, if you do that, you'll trigger validation,
@@ -176,9 +176,9 @@ and the HTML output will include any validation errors::
>>> default_data = {'name': 'Your name', 'url': 'http://'}
>>> f = CommentForm(default_data, auto_id=False)
>>> print(f)
- <tr><th>Name:</th><td><input type="text" name="name" value="Your name" required /></td></tr>
- <tr><th>Url:</th><td><ul class="errorlist"><li>Enter a valid URL.</li></ul><input type="url" name="url" value="http://" required /></td></tr>
- <tr><th>Comment:</th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="text" name="comment" required /></td></tr>
+ <tr><th>Name:</th><td><input type="text" name="name" value="Your name" required></td></tr>
+ <tr><th>Url:</th><td><ul class="errorlist"><li>Enter a valid URL.</li></ul><input type="url" name="url" value="http://" required></td></tr>
+ <tr><th>Comment:</th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="text" name="comment" required></td></tr>
This is why ``initial`` values are only displayed for unbound forms. For bound
forms, the HTML output will use the bound data.
@@ -205,7 +205,7 @@ Instead of a constant, you can also pass any callable::
>>> class DateForm(forms.Form):
... day = forms.DateField(initial=datetime.date.today)
>>> print(DateForm())
- <tr><th>Day:</th><td><input type="text" name="day" value="12/23/2008" required /><td></tr>
+ <tr><th>Day:</th><td><input type="text" name="day" value="12/23/2008" required><td></tr>
The callable will be evaluated only when the unbound form is displayed, not when it is defined.
@@ -241,20 +241,20 @@ fields. We've specified ``auto_id=False`` to simplify the output::
... cc_myself = forms.BooleanField(required=False)
>>> f = HelpTextContactForm(auto_id=False)
>>> print(f.as_table())
- <tr><th>Subject:</th><td><input type="text" name="subject" maxlength="100" required /><br /><span class="helptext">100 characters max.</span></td></tr>
- <tr><th>Message:</th><td><input type="text" name="message" required /></td></tr>
- <tr><th>Sender:</th><td><input type="email" name="sender" required /><br />A valid email address, please.</td></tr>
- <tr><th>Cc myself:</th><td><input type="checkbox" name="cc_myself" /></td></tr>
+ <tr><th>Subject:</th><td><input type="text" name="subject" maxlength="100" required><br><span class="helptext">100 characters max.</span></td></tr>
+ <tr><th>Message:</th><td><input type="text" name="message" required></td></tr>
+ <tr><th>Sender:</th><td><input type="email" name="sender" required><br>A valid email address, please.</td></tr>
+ <tr><th>Cc myself:</th><td><input type="checkbox" name="cc_myself"></td></tr>
>>> print(f.as_ul()))
- <li>Subject: <input type="text" name="subject" maxlength="100" required /> <span class="helptext">100 characters max.</span></li>
- <li>Message: <input type="text" name="message" required /></li>
- <li>Sender: <input type="email" name="sender" required /> A valid email address, please.</li>
- <li>Cc myself: <input type="checkbox" name="cc_myself" /></li>
+ <li>Subject: <input type="text" name="subject" maxlength="100" required> <span class="helptext">100 characters max.</span></li>
+ <li>Message: <input type="text" name="message" required></li>
+ <li>Sender: <input type="email" name="sender" required> A valid email address, please.</li>
+ <li>Cc myself: <input type="checkbox" name="cc_myself"></li>
>>> print(f.as_p())
- <p>Subject: <input type="text" name="subject" maxlength="100" required /> <span class="helptext">100 characters max.</span></p>
- <p>Message: <input type="text" name="message" required /></p>
- <p>Sender: <input type="email" name="sender" required /> A valid email address, please.</p>
- <p>Cc myself: <input type="checkbox" name="cc_myself" /></p>
+ <p>Subject: <input type="text" name="subject" maxlength="100" required> <span class="helptext">100 characters max.</span></p>
+ <p>Message: <input type="text" name="message" required></p>
+ <p>Sender: <input type="email" name="sender" required> A valid email address, please.</p>
+ <p>Cc myself: <input type="checkbox" name="cc_myself"></p>
``error_messages``
------------------
diff --git a/docs/ref/forms/widgets.txt b/docs/ref/forms/widgets.txt
index dc6256ee06..ee913f0f72 100644
--- a/docs/ref/forms/widgets.txt
+++ b/docs/ref/forms/widgets.txt
@@ -142,9 +142,9 @@ provided for each widget will be rendered exactly the same::
>>> f = CommentForm(auto_id=False)
>>> f.as_table()
- <tr><th>Name:</th><td><input type="text" name="name" required /></td></tr>
- <tr><th>Url:</th><td><input type="url" name="url" required /></td></tr>
- <tr><th>Comment:</th><td><input type="text" name="comment" required /></td></tr>
+ <tr><th>Name:</th><td><input type="text" name="name" required></td></tr>
+ <tr><th>Url:</th><td><input type="url" name="url" required></td></tr>
+ <tr><th>Comment:</th><td><input type="text" name="comment" required></td></tr>
On a real Web page, you probably don't want every widget to look the same. You
might want a larger input element for the comment, and you might want the
@@ -161,9 +161,9 @@ Django will then include the extra attributes in the rendered output:
>>> f = CommentForm(auto_id=False)
>>> f.as_table()
- <tr><th>Name:</th><td><input type="text" name="name" class="special" required /></td></tr>
- <tr><th>Url:</th><td><input type="url" name="url" required /></td></tr>
- <tr><th>Comment:</th><td><input type="text" name="comment" size="40" required /></td></tr>
+ <tr><th>Name:</th><td><input type="text" name="name" class="special" required></td></tr>
+ <tr><th>Url:</th><td><input type="url" name="url" required></td></tr>
+ <tr><th>Comment:</th><td><input type="text" name="comment" size="40" required></td></tr>
You can also set the HTML ``id`` using :attr:`~Widget.attrs`. See
:attr:`BoundField.id_for_label` for an example.
@@ -211,18 +211,18 @@ foundation for custom widgets.
>>> from django import forms
>>> name = forms.TextInput(attrs={'size': 10, 'title': 'Your name',})
>>> name.render('name', 'A name')
- '<input title="Your name" type="text" name="name" value="A name" size="10" required />'
+ '<input title="Your name" type="text" name="name" value="A name" size="10" required>'
If you assign a value of ``True`` or ``False`` to an attribute,
it will be rendered as an HTML5 boolean attribute::
>>> name = forms.TextInput(attrs={'required': True})
>>> name.render('name', 'A name')
- '<input name="name" type="text" value="A name" required />'
+ '<input name="name" type="text" value="A name" required>'
>>>
>>> name = forms.TextInput(attrs={'required': False})
>>> name.render('name', 'A name')
- '<input name="name" type="text" value="A name" />'
+ '<input name="name" type="text" value="A name">'
.. attribute:: Widget.supports_microseconds
@@ -701,16 +701,16 @@ that specifies the template used to render each choice. For example, for the
.. code-block:: html
<div class="myradio">
- <label for="id_beatles_0"><input id="id_beatles_0" name="beatles" type="radio" value="john" required /> John</label>
+ <label for="id_beatles_0"><input id="id_beatles_0" name="beatles" type="radio" value="john" required> John</label>
</div>
<div class="myradio">
- <label for="id_beatles_1"><input id="id_beatles_1" name="beatles" type="radio" value="paul" required /> Paul</label>
+ <label for="id_beatles_1"><input id="id_beatles_1" name="beatles" type="radio" value="paul" required> Paul</label>
</div>
<div class="myradio">
- <label for="id_beatles_2"><input id="id_beatles_2" name="beatles" type="radio" value="george" required /> George</label>
+ <label for="id_beatles_2"><input id="id_beatles_2" name="beatles" type="radio" value="george" required> George</label>
</div>
<div class="myradio">
- <label for="id_beatles_3"><input id="id_beatles_3" name="beatles" type="radio" value="ringo" required /> Ringo</label>
+ <label for="id_beatles_3"><input id="id_beatles_3" name="beatles" type="radio" value="ringo" required> Ringo</label>
</div>
That included the ``<label>`` tags. To get more granular, you can use each
@@ -732,22 +732,22 @@ that specifies the template used to render each choice. For example, for the
<label for="id_beatles_0">
John
- <span class="radio"><input id="id_beatles_0" name="beatles" type="radio" value="john" required /></span>
+ <span class="radio"><input id="id_beatles_0" name="beatles" type="radio" value="john" required></span>
</label>
<label for="id_beatles_1">
Paul
- <span class="radio"><input id="id_beatles_1" name="beatles" type="radio" value="paul" required /></span>
+ <span class="radio"><input id="id_beatles_1" name="beatles" type="radio" value="paul" required></span>
</label>
<label for="id_beatles_2">
George
- <span class="radio"><input id="id_beatles_2" name="beatles" type="radio" value="george" required /></span>
+ <span class="radio"><input id="id_beatles_2" name="beatles" type="radio" value="george" required></span>
</label>
<label for="id_beatles_3">
Ringo
- <span class="radio"><input id="id_beatles_3" name="beatles" type="radio" value="ringo" required /></span>
+ <span class="radio"><input id="id_beatles_3" name="beatles" type="radio" value="ringo" required></span>
</label>
If you decide not to loop over the radio buttons -- e.g., if your template
diff --git a/docs/ref/request-response.txt b/docs/ref/request-response.txt
index bc870b101b..e2e8e4cec1 100644
--- a/docs/ref/request-response.txt
+++ b/docs/ref/request-response.txt
@@ -124,7 +124,7 @@ All attributes should be considered read-only, unless stated otherwise.
.. attribute:: HttpRequest.FILES
A dictionary-like object containing all uploaded files. Each key in
- ``FILES`` is the ``name`` from the ``<input type="file" name="" />``. Each
+ ``FILES`` is the ``name`` from the ``<input type="file" name="">``. Each
value in ``FILES`` is an :class:`~django.core.files.uploadedfile.UploadedFile`.
See :doc:`/topics/files` for more information.
diff --git a/docs/ref/templates/builtins.txt b/docs/ref/templates/builtins.txt
index ec05d16292..6f37b04320 100644
--- a/docs/ref/templates/builtins.txt
+++ b/docs/ref/templates/builtins.txt
@@ -1192,7 +1192,7 @@ value to a maximum value, and then applies that ratio to a constant.
For example::
<img src="bar.png" alt="Bar"
- height="10" width="{% widthratio this_value max_value max_width %}" />
+ height="10" width="{% widthratio this_value max_value max_width %}">
If ``this_value`` is 175, ``max_value`` is 200, and ``max_width`` is 100, the
image in the above example will be 88 pixels wide
@@ -1832,14 +1832,14 @@ If ``value`` is ``['a', 'b', 'c', 'd']`` or ``"abcd"``, the output will be
--------------
Replaces line breaks in plain text with appropriate HTML; a single
-newline becomes an HTML line break (``<br />``) and a new line
+newline becomes an HTML line break (``<br>``) and a new line
followed by a blank line becomes a paragraph break (``</p>``).
For example::
{{ value|linebreaks }}
-If ``value`` is ``Joel\nis a slug``, the output will be ``<p>Joel<br />is a
+If ``value`` is ``Joel\nis a slug``, the output will be ``<p>Joel<br>is a
slug</p>``.
.. templatefilter:: linebreaksbr
@@ -1848,13 +1848,13 @@ slug</p>``.
----------------
Converts all newlines in a piece of plain text to HTML line breaks
-(``<br />``).
+(``<br>``).
For example::
{{ value|linebreaksbr }}
-If ``value`` is ``Joel\nis a slug``, the output will be ``Joel<br />is a
+If ``value`` is ``Joel\nis a slug``, the output will be ``Joel<br>is a
slug``.
.. templatefilter:: linenumbers
@@ -2531,20 +2531,20 @@ app is installed, the tag will serve files using ``url()`` method of the
storage specified by :setting:`STATICFILES_STORAGE`. For example::
{% load static %}
- <img src="{% static "images/hi.jpg" %}" alt="Hi!" />
+ <img src="{% static "images/hi.jpg" %}" alt="Hi!">
It is also able to consume standard context variables, e.g. assuming a
``user_stylesheet`` variable is passed to the template::
{% load static %}
- <link rel="stylesheet" href="{% static user_stylesheet %}" type="text/css" media="screen" />
+ <link rel="stylesheet" href="{% static user_stylesheet %}" type="text/css" media="screen">
If you'd like to retrieve a static URL without displaying it, you can use a
slightly different call::
{% load static %}
{% static "images/hi.jpg" as myphoto %}
- <img src="{{ myphoto }}"></img>
+ <img src="{{ myphoto }}">
.. admonition:: Using Jinja2 templates?
@@ -2561,7 +2561,7 @@ over exactly where and how :setting:`STATIC_URL` is injected into the template,
you can use the :ttag:`get_static_prefix` template tag::
{% load static %}
- <img src="{% get_static_prefix %}images/hi.jpg" alt="Hi!" />
+ <img src="{% get_static_prefix %}images/hi.jpg" alt="Hi!">
There's also a second form you can use to avoid extra processing if you need
the value multiple times::
@@ -2569,8 +2569,8 @@ the value multiple times::
{% load static %}
{% get_static_prefix as STATIC_PREFIX %}
- <img src="{{ STATIC_PREFIX }}images/hi.jpg" alt="Hi!" />
- <img src="{{ STATIC_PREFIX }}images/hi2.jpg" alt="Hello!" />
+ <img src="{{ STATIC_PREFIX }}images/hi.jpg" alt="Hi!">
+ <img src="{{ STATIC_PREFIX }}images/hi2.jpg" alt="Hello!">
.. templatetag:: get_media_prefix
diff --git a/docs/ref/templates/language.txt b/docs/ref/templates/language.txt
index 806832e061..c6ce3b3dfd 100644
--- a/docs/ref/templates/language.txt
+++ b/docs/ref/templates/language.txt
@@ -291,7 +291,7 @@ It's easiest to understand template inheritance by starting with an example::
<!DOCTYPE html>
<html lang="en">
<head>
- <link rel="stylesheet" href="style.css" />
+ <link rel="stylesheet" href="style.css">
<title>{% block title %}My amazing site{% endblock %}</title>
</head>
@@ -344,7 +344,7 @@ like::
<!DOCTYPE html>
<html lang="en">
<head>
- <link rel="stylesheet" href="style.css" />
+ <link rel="stylesheet" href="style.css">
<title>My amazing blog</title>
</head>
diff --git a/docs/releases/2.1.txt b/docs/releases/2.1.txt
index c0bd207445..3465f41ce5 100644
--- a/docs/releases/2.1.txt
+++ b/docs/releases/2.1.txt
@@ -255,6 +255,10 @@ Miscellaneous
:class:`~django.forms.SelectMultiple` widget now uses HTML5 boolean syntax
rather than XHTML's ``multiple="multiple"``.
+* HTML rendered by form widgets no longer includes a closing slash on void
+ elements, e.g. ``<br>``. This is incompatible within XHTML, although some
+ widgets already used aspects of HTML5 such as boolean attributes.
+
.. _deprecated-features-2.1:
Features deprecated in 2.1
diff --git a/docs/topics/auth/default.txt b/docs/topics/auth/default.txt
index 3e8a63c25f..a118e56543 100644
--- a/docs/topics/auth/default.txt
+++ b/docs/topics/auth/default.txt
@@ -1056,8 +1056,8 @@ implementation details see :ref:`using-the-views`.
</tr>
</table>
- <input type="submit" value="login" />
- <input type="hidden" name="next" value="{{ next }}" />
+ <input type="submit" value="login">
+ <input type="hidden" name="next" value="{{ next }}">
</form>
{# Assumes you setup the password_reset view in your URLconf #}
diff --git a/docs/topics/forms/formsets.txt b/docs/topics/forms/formsets.txt
index 08c0194e53..cb07e7ad59 100644
--- a/docs/topics/forms/formsets.txt
+++ b/docs/topics/forms/formsets.txt
@@ -29,8 +29,8 @@ would with a regular form::
>>> formset = ArticleFormSet()
>>> for form in formset:
... print(form.as_table())
- <tr><th><label for="id_form-0-title">Title:</label></th><td><input type="text" name="form-0-title" id="id_form-0-title" /></td></tr>
- <tr><th><label for="id_form-0-pub_date">Pub date:</label></th><td><input type="text" name="form-0-pub_date" id="id_form-0-pub_date" /></td></tr>
+ <tr><th><label for="id_form-0-title">Title:</label></th><td><input type="text" name="form-0-title" id="id_form-0-title"></td></tr>
+ <tr><th><label for="id_form-0-pub_date">Pub date:</label></th><td><input type="text" name="form-0-pub_date" id="id_form-0-pub_date"></td></tr>
As you can see it only displayed one empty form. The number of empty forms
that is displayed is controlled by the ``extra`` parameter. By default,
@@ -69,12 +69,12 @@ example::
>>> for form in formset:
... print(form.as_table())
- <tr><th><label for="id_form-0-title">Title:</label></th><td><input type="text" name="form-0-title" value="Django is now open source" id="id_form-0-title" /></td></tr>
- <tr><th><label for="id_form-0-pub_date">Pub date:</label></th><td><input type="text" name="form-0-pub_date" value="2008-05-12" id="id_form-0-pub_date" /></td></tr>
- <tr><th><label for="id_form-1-title">Title:</label></th><td><input type="text" name="form-1-title" id="id_form-1-title" /></td></tr>
- <tr><th><label for="id_form-1-pub_date">Pub date:</label></th><td><input type="text" name="form-1-pub_date" id="id_form-1-pub_date" /></td></tr>
- <tr><th><label for="id_form-2-title">Title:</label></th><td><input type="text" name="form-2-title" id="id_form-2-title" /></td></tr>
- <tr><th><label for="id_form-2-pub_date">Pub date:</label></th><td><input type="text" name="form-2-pub_date" id="id_form-2-pub_date" /></td></tr>
+ <tr><th><label for="id_form-0-title">Title:</label></th><td><input type="text" name="form-0-title" value="Django is now open source" id="id_form-0-title"></td></tr>
+ <tr><th><label for="id_form-0-pub_date">Pub date:</label></th><td><input type="text" name="form-0-pub_date" value="2008-05-12" id="id_form-0-pub_date"></td></tr>
+ <tr><th><label for="id_form-1-title">Title:</label></th><td><input type="text" name="form-1-title" id="id_form-1-title"></td></tr>
+ <tr><th><label for="id_form-1-pub_date">Pub date:</label></th><td><input type="text" name="form-1-pub_date" id="id_form-1-pub_date"></td></tr>
+ <tr><th><label for="id_form-2-title">Title:</label></th><td><input type="text" name="form-2-title" id="id_form-2-title"></td></tr>
+ <tr><th><label for="id_form-2-pub_date">Pub date:</label></th><td><input type="text" name="form-2-pub_date" id="id_form-2-pub_date"></td></tr>
There are now a total of three forms showing above. One for the initial data
that was passed in and two extra forms. Also note that we are passing in a
@@ -103,8 +103,8 @@ gives you the ability to limit the number of forms the formset will display::
>>> formset = ArticleFormSet()
>>> for form in formset:
... print(form.as_table())
- <tr><th><label for="id_form-0-title">Title:</label></th><td><input type="text" name="form-0-title" id="id_form-0-title" /></td></tr>
- <tr><th><label for="id_form-0-pub_date">Pub date:</label></th><td><input type="text" name="form-0-pub_date" id="id_form-0-pub_date" /></td></tr>
+ <tr><th><label for="id_form-0-title">Title:</label></th><td><input type="text" name="form-0-title" id="id_form-0-title"></td></tr>
+ <tr><th><label for="id_form-0-pub_date">Pub date:</label></th><td><input type="text" name="form-0-pub_date" id="id_form-0-pub_date"></td></tr>
If the value of ``max_num`` is greater than the number of existing items in the
initial data, up to ``extra`` additional blank forms will be added to the
@@ -406,15 +406,15 @@ Lets you create a formset with the ability to order::
... ])
>>> for form in formset:
... print(form.as_table())
- <tr><th><label for="id_form-0-title">Title:</label></th><td><input type="text" name="form-0-title" value="Article #1" id="id_form-0-title" /></td></tr>
- <tr><th><label for="id_form-0-pub_date">Pub date:</label></th><td><input type="text" name="form-0-pub_date" value="2008-05-10" id="id_form-0-pub_date" /></td></tr>
- <tr><th><label for="id_form-0-ORDER">Order:</label></th><td><input type="number" name="form-0-ORDER" value="1" id="id_form-0-ORDER" /></td></tr>
- <tr><th><label for="id_form-1-title">Title:</label></th><td><input type="text" name="form-1-title" value="Article #2" id="id_form-1-title" /></td></tr>
- <tr><th><label for="id_form-1-pub_date">Pub date:</label></th><td><input type="text" name="form-1-pub_date" value="2008-05-11" id="id_form-1-pub_date" /></td></tr>
- <tr><th><label for="id_form-1-ORDER">Order:</label></th><td><input type="number" name="form-1-ORDER" value="2" id="id_form-1-ORDER" /></td></tr>
- <tr><th><label for="id_form-2-title">Title:</label></th><td><input type="text" name="form-2-title" id="id_form-2-title" /></td></tr>
- <tr><th><label for="id_form-2-pub_date">Pub date:</label></th><td><input type="text" name="form-2-pub_date" id="id_form-2-pub_date" /></td></tr>
- <tr><th><label for="id_form-2-ORDER">Order:</label></th><td><input type="number" name="form-2-ORDER" id="id_form-2-ORDER" /></td></tr>
+ <tr><th><label for="id_form-0-title">Title:</label></th><td><input type="text" name="form-0-title" value="Article #1" id="id_form-0-title"></td></tr>
+ <tr><th><label for="id_form-0-pub_date">Pub date:</label></th><td><input type="text" name="form-0-pub_date" value="2008-05-10" id="id_form-0-pub_date"></td></tr>
+ <tr><th><label for="id_form-0-ORDER">Order:</label></th><td><input type="number" name="form-0-ORDER" value="1" id="id_form-0-ORDER"></td></tr>
+ <tr><th><label for="id_form-1-title">Title:</label></th><td><input type="text" name="form-1-title" value="Article #2" id="id_form-1-title"></td></tr>
+ <tr><th><label for="id_form-1-pub_date">Pub date:</label></th><td><input type="text" name="form-1-pub_date" value="2008-05-11" id="id_form-1-pub_date"></td></tr>
+ <tr><th><label for="id_form-1-ORDER">Order:</label></th><td><input type="number" name="form-1-ORDER" value="2" id="id_form-1-ORDER"></td></tr>
+ <tr><th><label for="id_form-2-title">Title:</label></th><td><input type="text" name="form-2-title" id="id_form-2-title"></td></tr>
+ <tr><th><label for="id_form-2-pub_date">Pub date:</label></th><td><input type="text" name="form-2-pub_date" id="id_form-2-pub_date"></td></tr>
+ <tr><th><label for="id_form-2-ORDER">Order:</label></th><td><input type="number" name="form-2-ORDER" id="id_form-2-ORDER"></td></tr>
This adds an additional field to each form. This new field is named ``ORDER``
and is an ``forms.IntegerField``. For the forms that came from the initial
@@ -466,15 +466,15 @@ Lets you create a formset with the ability to select forms for deletion::
... ])
>>> for form in formset:
... print(form.as_table())
- <tr><th><label for="id_form-0-title">Title:</label></th><td><input type="text" name="form-0-title" value="Article #1" id="id_form-0-title" /></td></tr>
- <tr><th><label for="id_form-0-pub_date">Pub date:</label></th><td><input type="text" name="form-0-pub_date" value="2008-05-10" id="id_form-0-pub_date" /></td></tr>
- <tr><th><label for="id_form-0-DELETE">Delete:</label></th><td><input type="checkbox" name="form-0-DELETE" id="id_form-0-DELETE" /></td></tr>
- <tr><th><label for="id_form-1-title">Title:</label></th><td><input type="text" name="form-1-title" value="Article #2" id="id_form-1-title" /></td></tr>
- <tr><th><label for="id_form-1-pub_date">Pub date:</label></th><td><input type="text" name="form-1-pub_date" value="2008-05-11" id="id_form-1-pub_date" /></td></tr>
- <tr><th><label for="id_form-1-DELETE">Delete:</label></th><td><input type="checkbox" name="form-1-DELETE" id="id_form-1-DELETE" /></td></tr>
- <tr><th><label for="id_form-2-title">Title:</label></th><td><input type="text" name="form-2-title" id="id_form-2-title" /></td></tr>
- <tr><th><label for="id_form-2-pub_date">Pub date:</label></th><td><input type="text" name="form-2-pub_date" id="id_form-2-pub_date" /></td></tr>
- <tr><th><label for="id_form-2-DELETE">Delete:</label></th><td><input type="checkbox" name="form-2-DELETE" id="id_form-2-DELETE" /></td></tr>
+ <tr><th><label for="id_form-0-title">Title:</label></th><td><input type="text" name="form-0-title" value="Article #1" id="id_form-0-title"></td></tr>
+ <tr><th><label for="id_form-0-pub_date">Pub date:</label></th><td><input type="text" name="form-0-pub_date" value="2008-05-10" id="id_form-0-pub_date"></td></tr>
+ <tr><th><label for="id_form-0-DELETE">Delete:</label></th><td><input type="checkbox" name="form-0-DELETE" id="id_form-0-DELETE"></td></tr>
+ <tr><th><label for="id_form-1-title">Title:</label></th><td><input type="text" name="form-1-title" value="Article #2" id="id_form-1-title"></td></tr>
+ <tr><th><label for="id_form-1-pub_date">Pub date:</label></th><td><input type="text" name="form-1-pub_date" value="2008-05-11" id="id_form-1-pub_date"></td></tr>
+ <tr><th><label for="id_form-1-DELETE">Delete:</label></th><td><input type="checkbox" name="form-1-DELETE" id="id_form-1-DELETE"></td></tr>
+ <tr><th><label for="id_form-2-title">Title:</label></th><td><input type="text" name="form-2-title" id="id_form-2-title"></td></tr>
+ <tr><th><label for="id_form-2-pub_date">Pub date:</label></th><td><input type="text" name="form-2-pub_date" id="id_form-2-pub_date"></td></tr>
+ <tr><th><label for="id_form-2-DELETE">Delete:</label></th><td><input type="checkbox" name="form-2-DELETE" id="id_form-2-DELETE"></td></tr>
Similar to ``can_order`` this adds a new field to each form named ``DELETE``
and is a ``forms.BooleanField``. When data comes through marking any of the
@@ -540,9 +540,9 @@ default fields/attributes of the order and deletion fields::
>>> formset = ArticleFormSet()
>>> for form in formset:
... print(form.as_table())
- <tr><th><label for="id_form-0-title">Title:</label></th><td><input type="text" name="form-0-title" id="id_form-0-title" /></td></tr>
- <tr><th><label for="id_form-0-pub_date">Pub date:</label></th><td><input type="text" name="form-0-pub_date" id="id_form-0-pub_date" /></td></tr>
- <tr><th><label for="id_form-0-my_field">My field:</label></th><td><input type="text" name="form-0-my_field" id="id_form-0-my_field" /></td></tr>
+ <tr><th><label for="id_form-0-title">Title:</label></th><td><input type="text" name="form-0-title" id="id_form-0-title"></td></tr>
+ <tr><th><label for="id_form-0-pub_date">Pub date:</label></th><td><input type="text" name="form-0-pub_date" id="id_form-0-pub_date"></td></tr>
+ <tr><th><label for="id_form-0-my_field">My field:</label></th><td><input type="text" name="form-0-my_field" id="id_form-0-my_field"></td></tr>
.. _custom-formset-form-kwargs:
@@ -592,14 +592,14 @@ For example, in the default case, you might see:
.. code-block:: html
<label for="id_form-0-title">Title:</label>
- <input type="text" name="form-0-title" id="id_form-0-title" />
+ <input type="text" name="form-0-title" id="id_form-0-title">
But with ``ArticleFormset(prefix='article')`` that becomes:
.. code-block:: html
<label for="id_article-0-title">Title:</label>
- <input type="text" name="article-0-title" id="id_article-0-title" />
+ <input type="text" name="article-0-title" id="id_article-0-title">
This is useful if you want to :ref:`use more than one formset in a view
<multiple-formsets-in-view>`.
diff --git a/docs/topics/forms/index.txt b/docs/topics/forms/index.txt
index 86de7d1b06..71d5a37ed9 100644
--- a/docs/topics/forms/index.txt
+++ b/docs/topics/forms/index.txt
@@ -259,7 +259,7 @@ The whole form, when rendered for the first time, will look like:
.. code-block:: html+django
<label for="your_name">Your name: </label>
- <input id="your_name" type="text" name="your_name" maxlength="100" required />
+ <input id="your_name" type="text" name="your_name" maxlength="100" required>
Note that it **does not** include the ``<form>`` tags, or a submit button.
We'll have to provide those ourselves in the template.
@@ -334,7 +334,7 @@ is:
<form action="/your-name/" method="post">
{% csrf_token %}
{{ form }}
- <input type="submit" value="Submit" />
+ <input type="submit" value="Submit">
</form>
All the form's fields and their attributes will be unpacked into HTML markup
@@ -512,13 +512,13 @@ Here's the output of ``{{ form.as_p }}`` for our ``ContactForm`` instance:
.. code-block:: html+django
<p><label for="id_subject">Subject:</label>
- <input id="id_subject" type="text" name="subject" maxlength="100" required /></p>
+ <input id="id_subject" type="text" name="subject" maxlength="100" required></p>
<p><label for="id_message">Message:</label>
<textarea name="message" id="id_message" required></textarea></p>
<p><label for="id_sender">Sender:</label>
- <input type="email" name="sender" id="id_sender" required /></p>
+ <input type="email" name="sender" id="id_sender" required></p>
<p><label for="id_cc_myself">Cc myself:</label>
- <input type="checkbox" name="cc_myself" id="id_cc_myself" /></p>
+ <input type="checkbox" name="cc_myself" id="id_cc_myself"></p>
Note that each form field has an ID attribute set to ``id_<field-name>``, which
is referenced by the accompanying label tag. This is important in ensuring that
diff --git a/docs/topics/forms/media.txt b/docs/topics/forms/media.txt
index 28c5054bc3..6b9165339f 100644
--- a/docs/topics/forms/media.txt
+++ b/docs/topics/forms/media.txt
@@ -71,7 +71,7 @@ can be retrieved through this property::
>>> w = CalendarWidget()
>>> print(w.media)
- <link href="http://static.example.com/pretty.css" type="text/css" media="all" rel="stylesheet" />
+ <link href="http://static.example.com/pretty.css" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="http://static.example.com/animations.js"></script>
<script type="text/javascript" src="http://static.example.com/actions.js"></script>
@@ -114,9 +114,9 @@ requirements::
If this last CSS definition were to be rendered, it would become the following HTML::
- <link href="http://static.example.com/pretty.css" type="text/css" media="screen" rel="stylesheet" />
- <link href="http://static.example.com/lo_res.css" type="text/css" media="tv,projector" rel="stylesheet" />
- <link href="http://static.example.com/newspaper.css" type="text/css" media="print" rel="stylesheet" />
+ <link href="http://static.example.com/pretty.css" type="text/css" media="screen" rel="stylesheet">
+ <link href="http://static.example.com/lo_res.css" type="text/css" media="tv,projector" rel="stylesheet">
+ <link href="http://static.example.com/newspaper.css" type="text/css" media="print" rel="stylesheet">
``js``
------
@@ -145,8 +145,8 @@ example above::
>>> w = FancyCalendarWidget()
>>> print(w.media)
- <link href="http://static.example.com/pretty.css" type="text/css" media="all" rel="stylesheet" />
- <link href="http://static.example.com/fancy.css" type="text/css" media="all" rel="stylesheet" />
+ <link href="http://static.example.com/pretty.css" type="text/css" media="all" rel="stylesheet">
+ <link href="http://static.example.com/fancy.css" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="http://static.example.com/animations.js"></script>
<script type="text/javascript" src="http://static.example.com/actions.js"></script>
<script type="text/javascript" src="http://static.example.com/whizbang.js"></script>
@@ -165,7 +165,7 @@ an ``extend=False`` declaration to the ``Media`` declaration::
>>> w = FancyCalendarWidget()
>>> print(w.media)
- <link href="http://static.example.com/fancy.css" type="text/css" media="all" rel="stylesheet" />
+ <link href="http://static.example.com/fancy.css" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="http://static.example.com/whizbang.js"></script>
If you require even more control over inheritance, define your assets using a
@@ -228,7 +228,7 @@ was ``None``::
>>> w = CalendarWidget()
>>> print(w.media)
- <link href="/css/pretty.css" type="text/css" media="all" rel="stylesheet" />
+ <link href="/css/pretty.css" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="http://uploads.example.com/animations.js"></script>
<script type="text/javascript" src="http://othersite.com/actions.js"></script>
@@ -236,7 +236,7 @@ But if :setting:`STATIC_URL` is ``'http://static.example.com/'``::
>>> w = CalendarWidget()
>>> print(w.media)
- <link href="/css/pretty.css" type="text/css" media="all" rel="stylesheet" />
+ <link href="/css/pretty.css" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="http://static.example.com/animations.js"></script>
<script type="text/javascript" src="http://othersite.com/actions.js"></script>
@@ -245,7 +245,7 @@ Or if :mod:`~django.contrib.staticfiles` is configured using the
>>> w = CalendarWidget()
>>> print(w.media)
- <link href="/css/pretty.css" type="text/css" media="all" rel="stylesheet" />
+ <link href="/css/pretty.css" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="https://static.example.com/animations.27e20196a850.js"></script>
<script type="text/javascript" src="http://othersite.com/actions.js"></script>
@@ -268,12 +268,12 @@ operator to filter out a medium of interest. For example::
>>> w = CalendarWidget()
>>> print(w.media)
- <link href="http://static.example.com/pretty.css" type="text/css" media="all" rel="stylesheet" />
+ <link href="http://static.example.com/pretty.css" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="http://static.example.com/animations.js"></script>
<script type="text/javascript" src="http://static.example.com/actions.js"></script>
>>> print(w.media['css'])
- <link href="http://static.example.com/pretty.css" type="text/css" media="all" rel="stylesheet" />
+ <link href="http://static.example.com/pretty.css" type="text/css" media="all" rel="stylesheet">
When you use the subscript operator, the value that is returned is a
new ``Media`` object -- but one that only contains the media of interest.
@@ -300,7 +300,7 @@ specified by both::
>>> w1 = CalendarWidget()
>>> w2 = OtherWidget()
>>> print(w1.media + w2.media)
- <link href="http://static.example.com/pretty.css" type="text/css" media="all" rel="stylesheet" />
+ <link href="http://static.example.com/pretty.css" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="http://static.example.com/animations.js"></script>
<script type="text/javascript" src="http://static.example.com/actions.js"></script>
<script type="text/javascript" src="http://static.example.com/whizbang.js"></script>
@@ -362,7 +362,7 @@ are part of the form::
>>> f = ContactForm()
>>> f.media
- <link href="http://static.example.com/pretty.css" type="text/css" media="all" rel="stylesheet" />
+ <link href="http://static.example.com/pretty.css" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="http://static.example.com/animations.js"></script>
<script type="text/javascript" src="http://static.example.com/actions.js"></script>
<script type="text/javascript" src="http://static.example.com/whizbang.js"></script>
@@ -382,8 +382,8 @@ form::
>>> f = ContactForm()
>>> f.media
- <link href="http://static.example.com/pretty.css" type="text/css" media="all" rel="stylesheet" />
- <link href="http://static.example.com/layout.css" type="text/css" media="all" rel="stylesheet" />
+ <link href="http://static.example.com/pretty.css" type="text/css" media="all" rel="stylesheet">
+ <link href="http://static.example.com/layout.css" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="http://static.example.com/animations.js"></script>
<script type="text/javascript" src="http://static.example.com/actions.js"></script>
<script type="text/javascript" src="http://static.example.com/whizbang.js"></script>
diff --git a/docs/topics/forms/modelforms.txt b/docs/topics/forms/modelforms.txt
index 3c49e3b8e3..553271e598 100644
--- a/docs/topics/forms/modelforms.txt
+++ b/docs/topics/forms/modelforms.txt
@@ -770,14 +770,14 @@ with the ``Author`` model. It works just like a regular formset::
>>> formset = AuthorFormSet()
>>> print(formset)
- <input type="hidden" name="form-TOTAL_FORMS" value="1" id="id_form-TOTAL_FORMS" /><input type="hidden" name="form-INITIAL_FORMS" value="0" id="id_form-INITIAL_FORMS" /><input type="hidden" name="form-MAX_NUM_FORMS" id="id_form-MAX_NUM_FORMS" />
- <tr><th><label for="id_form-0-name">Name:</label></th><td><input id="id_form-0-name" type="text" name="form-0-name" maxlength="100" /></td></tr>
+ <input type="hidden" name="form-TOTAL_FORMS" value="1" id="id_form-TOTAL_FORMS"><input type="hidden" name="form-INITIAL_FORMS" value="0" id="id_form-INITIAL_FORMS"><input type="hidden" name="form-MAX_NUM_FORMS" id="id_form-MAX_NUM_FORMS">
+ <tr><th><label for="id_form-0-name">Name:</label></th><td><input id="id_form-0-name" type="text" name="form-0-name" maxlength="100"></td></tr>
<tr><th><label for="id_form-0-title">Title:</label></th><td><select name="form-0-title" id="id_form-0-title">
<option value="" selected>---------</option>
<option value="MR">Mr.</option>
<option value="MRS">Mrs.</option>
<option value="MS">Ms.</option>
- </select><input type="hidden" name="form-0-id" id="id_form-0-id" /></td></tr>
+ </select><input type="hidden" name="form-0-id" id="id_form-0-id"></td></tr>
.. note::
@@ -959,10 +959,10 @@ so long as the total number of forms does not exceed ``max_num``::
>>> formset = AuthorFormSet(queryset=Author.objects.order_by('name'))
>>> for form in formset:
... print(form.as_table())
- <tr><th><label for="id_form-0-name">Name:</label></th><td><input id="id_form-0-name" type="text" name="form-0-name" value="Charles Baudelaire" maxlength="100" /><input type="hidden" name="form-0-id" value="1" id="id_form-0-id" /></td></tr>
- <tr><th><label for="id_form-1-name">Name:</label></th><td><input id="id_form-1-name" type="text" name="form-1-name" value="Paul Verlaine" maxlength="100" /><input type="hidden" name="form-1-id" value="3" id="id_form-1-id" /></td></tr>
- <tr><th><label for="id_form-2-name">Name:</label></th><td><input id="id_form-2-name" type="text" name="form-2-name" value="Walt Whitman" maxlength="100" /><input type="hidden" name="form-2-id" value="2" id="id_form-2-id" /></td></tr>
- <tr><th><label for="id_form-3-name">Name:</label></th><td><input id="id_form-3-name" type="text" name="form-3-name" maxlength="100" /><input type="hidden" name="form-3-id" id="id_form-3-id" /></td></tr>
+ <tr><th><label for="id_form-0-name">Name:</label></th><td><input id="id_form-0-name" type="text" name="form-0-name" value="Charles Baudelaire" maxlength="100"><input type="hidden" name="form-0-id" value="1" id="id_form-0-id"></td></tr>
+ <tr><th><label for="id_form-1-name">Name:</label></th><td><input id="id_form-1-name" type="text" name="form-1-name" value="Paul Verlaine" maxlength="100"><input type="hidden" name="form-1-id" value="3" id="id_form-1-id"></td></tr>
+ <tr><th><label for="id_form-2-name">Name:</label></th><td><input id="id_form-2-name" type="text" name="form-2-name" value="Walt Whitman" maxlength="100"><input type="hidden" name="form-2-id" value="2" id="id_form-2-id"></td></tr>
+ <tr><th><label for="id_form-3-name">Name:</label></th><td><input id="id_form-3-name" type="text" name="form-3-name" maxlength="100"><input type="hidden" name="form-3-id" id="id_form-3-id"></td></tr>
A ``max_num`` value of ``None`` (the default) puts a high limit on the number
of forms displayed (1000). In practice this is equivalent to no limit.
diff --git a/docs/topics/i18n/timezones.txt b/docs/topics/i18n/timezones.txt
index 902dd7aa3a..eb97677777 100644
--- a/docs/topics/i18n/timezones.txt
+++ b/docs/topics/i18n/timezones.txt
@@ -204,7 +204,7 @@ Include a form in ``template.html`` that will ``POST`` to this view:
<option value="{{ tz }}"{% if tz == TIME_ZONE %} selected{% endif %}>{{ tz }}</option>
{% endfor %}
</select>
- <input type="submit" value="Set" />
+ <input type="submit" value="Set">
</form>
.. _time-zones-in-forms:
diff --git a/docs/topics/i18n/translation.txt b/docs/topics/i18n/translation.txt
index 305f3a5839..5003bfb997 100644
--- a/docs/topics/i18n/translation.txt
+++ b/docs/topics/i18n/translation.txt
@@ -610,7 +610,7 @@ filters::
</h1>
<p>
{% for stage in tour_stages %}
- {% cycle start end %}: {{ stage }}{% if forloop.counter|divisibleby:2 %}<br />{% else %}, {% endif %}
+ {% cycle start end %}: {{ stage }}{% if forloop.counter|divisibleby:2 %}<br>{% else %}, {% endif %}
{% endfor %}
</p>
@@ -891,9 +891,9 @@ use the ``{% get_language_info %}`` tag::
You can then access the information::
- Language code: {{ lang.code }}<br />
- Name of language: {{ lang.name_local }}<br />
- Name in English: {{ lang.name }}<br />
+ Language code: {{ lang.code }}<br>
+ Name of language: {{ lang.name_local }}<br>
+ Name in English: {{ lang.name }}<br>
Bi-directional: {{ lang.bidi }}
Name in the active language: {{ lang.name_translated }}
@@ -1788,7 +1788,7 @@ Here's example HTML template code:
{% load i18n %}
<form action="{% url 'set_language' %}" method="post">{% csrf_token %}
- <input name="next" type="hidden" value="{{ redirect_to }}" />
+ <input name="next" type="hidden" value="{{ redirect_to }}">
<select name="language">
{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
@@ -1799,7 +1799,7 @@ Here's example HTML template code:
</option>
{% endfor %}
</select>
- <input type="submit" value="Go" />
+ <input type="submit" value="Go">
</form>
In this example, Django looks up the URL of the page to which the user will be
diff --git a/docs/topics/pagination.txt b/docs/topics/pagination.txt
index 81efaafd28..80a6b66fc6 100644
--- a/docs/topics/pagination.txt
+++ b/docs/topics/pagination.txt
@@ -101,7 +101,7 @@ pages along with any interesting information from the objects themselves::
{% for contact in contacts %}
{# Each "contact" is a Contact model object. #}
- {{ contact.full_name|upper }}<br />
+ {{ contact.full_name|upper }}<br>
...
{% endfor %}
diff --git a/docs/topics/testing/tools.txt b/docs/topics/testing/tools.txt
index c7ae792fb5..d3be9e2124 100644
--- a/docs/topics/testing/tools.txt
+++ b/docs/topics/testing/tools.txt
@@ -1485,7 +1485,7 @@ your test suite.
self.assertHTMLEqual(
'<p>Hello <b>world!</p>',
'''<p>
- Hello <b>world! <b/>
+ Hello <b>world! </b>
</p>'''
)
self.assertHTMLEqual(
diff --git a/tests/admin_changelist/tests.py b/tests/admin_changelist/tests.py
index 5f3d30fd68..5be70ee6ad 100644
--- a/tests/admin_changelist/tests.py
+++ b/tests/admin_changelist/tests.py
@@ -39,7 +39,7 @@ def build_tbody_html(pk, href, extra_fields):
'<tbody><tr class="row1">'
'<td class="action-checkbox">'
'<input type="checkbox" name="_selected_action" value="{}" '
- 'class="action-select" /></td>'
+ 'class="action-select"></td>'
'<th class="field-name"><a href="{}">name</a></th>'
'{}</tr></tbody>'
).format(pk, href, extra_fields)
@@ -209,7 +209,7 @@ class ChangeListTests(TestCase):
# make sure that hidden fields are in the correct place
hiddenfields_div = (
'<div class="hiddenfields">'
- '<input type="hidden" name="form-0-id" value="%d" id="id_form-0-id" />'
+ '<input type="hidden" name="form-0-id" value="%d" id="id_form-0-id">'
'</div>'
) % new_child.id
self.assertInHTML(hiddenfields_div, table_output, msg_prefix='Failed to find hidden fields')
@@ -217,7 +217,7 @@ class ChangeListTests(TestCase):
# make sure that list editable fields are rendered in divs correctly
editable_name_field = (
'<input name="form-0-name" value="name" class="vTextField" '
- 'maxlength="30" type="text" id="id_form-0-name" />'
+ 'maxlength="30" type="text" id="id_form-0-name">'
)
self.assertInHTML(
'<td class="field-name">%s</td>' % editable_name_field,
diff --git a/tests/admin_docs/test_views.py b/tests/admin_docs/test_views.py
index a64da843ed..be69799d70 100644
--- a/tests/admin_docs/test_views.py
+++ b/tests/admin_docs/test_views.py
@@ -28,7 +28,7 @@ class AdminDocViewTests(TestDataMixin, AdminDocsTestCase):
self.client.logout()
response = self.client.get(reverse('django-admindocs-docroot'), follow=True)
# Should display the login screen
- self.assertContains(response, '<input type="hidden" name="next" value="/admindocs/" />', html=True)
+ self.assertContains(response, '<input type="hidden" name="next" value="/admindocs/">', html=True)
def test_bookmarklets(self):
response = self.client.get(reverse('django-admindocs-bookmarklets'))
diff --git a/tests/admin_inlines/tests.py b/tests/admin_inlines/tests.py
index 67ffa7648f..73b1bd065e 100644
--- a/tests/admin_inlines/tests.py
+++ b/tests/admin_inlines/tests.py
@@ -161,7 +161,7 @@ class TestInline(TestDataMixin, TestCase):
'<img src="/static/admin/img/icon-unknown.svg" '
'class="help help-tooltip" width="10" height="10" '
'alt="(Awesome tabular help text is awesome.)" '
- 'title="Awesome tabular help text is awesome." />',
+ 'title="Awesome tabular help text is awesome.">',
1
)
# ReadOnly fields
@@ -171,7 +171,7 @@ class TestInline(TestDataMixin, TestCase):
'<img src="/static/admin/img/icon-unknown.svg" '
'class="help help-tooltip" width="10" height="10" '
'alt="(Help text for ReadOnlyInline)" '
- 'title="Help text for ReadOnlyInline" />',
+ 'title="Help text for ReadOnlyInline">',
1
)
@@ -184,7 +184,7 @@ class TestInline(TestDataMixin, TestCase):
self.assertNotContains(response, '<td class="field-position">')
self.assertInHTML(
'<input id="id_somechildmodel_set-1-position" '
- 'name="somechildmodel_set-1-position" type="hidden" value="1" />',
+ 'name="somechildmodel_set-1-position" type="hidden" value="1">',
response.rendered_content,
)
@@ -193,26 +193,26 @@ class TestInline(TestDataMixin, TestCase):
Multiple inlines with related_name='+' have correct form prefixes.
"""
response = self.client.get(reverse('admin:admin_inlines_capofamiglia_add'))
- self.assertContains(response, '<input type="hidden" name="-1-0-id" id="id_-1-0-id" />', html=True)
+ self.assertContains(response, '<input type="hidden" name="-1-0-id" id="id_-1-0-id">', html=True)
self.assertContains(
response,
- '<input type="hidden" name="-1-0-capo_famiglia" id="id_-1-0-capo_famiglia" />',
+ '<input type="hidden" name="-1-0-capo_famiglia" id="id_-1-0-capo_famiglia">',
html=True
)
self.assertContains(
response,
- '<input id="id_-1-0-name" type="text" class="vTextField" name="-1-0-name" maxlength="100" />',
+ '<input id="id_-1-0-name" type="text" class="vTextField" name="-1-0-name" maxlength="100">',
html=True
)
- self.assertContains(response, '<input type="hidden" name="-2-0-id" id="id_-2-0-id" />', html=True)
+ self.assertContains(response, '<input type="hidden" name="-2-0-id" id="id_-2-0-id">', html=True)
self.assertContains(
response,
- '<input type="hidden" name="-2-0-capo_famiglia" id="id_-2-0-capo_famiglia" />',
+ '<input type="hidden" name="-2-0-capo_famiglia" id="id_-2-0-capo_famiglia">',
html=True
)
self.assertContains(
response,
- '<input id="id_-2-0-name" type="text" class="vTextField" name="-2-0-name" maxlength="100" />',
+ '<input id="id_-2-0-name" type="text" class="vTextField" name="-2-0-name" maxlength="100">',
html=True
)
@@ -265,12 +265,12 @@ class TestInline(TestDataMixin, TestCase):
# ModelAdmin
max_forms_input = (
'<input id="id_binarytree_set-MAX_NUM_FORMS" '
- 'name="binarytree_set-MAX_NUM_FORMS" type="hidden" value="%d" />'
+ 'name="binarytree_set-MAX_NUM_FORMS" type="hidden" value="%d">'
)
# The total number of forms will remain the same in either case
total_forms_hidden = (
'<input id="id_binarytree_set-TOTAL_FORMS" '
- 'name="binarytree_set-TOTAL_FORMS" type="hidden" value="2" />'
+ 'name="binarytree_set-TOTAL_FORMS" type="hidden" value="2">'
)
response = self.client.get(reverse('admin:admin_inlines_binarytree_add'))
self.assertInHTML(max_forms_input % 3, response.rendered_content)
@@ -293,11 +293,11 @@ class TestInline(TestDataMixin, TestCase):
modeladmin.inlines = [MinNumInline]
min_forms = (
'<input id="id_binarytree_set-MIN_NUM_FORMS" '
- 'name="binarytree_set-MIN_NUM_FORMS" type="hidden" value="2" />'
+ 'name="binarytree_set-MIN_NUM_FORMS" type="hidden" value="2">'
)
total_forms = (
'<input id="id_binarytree_set-TOTAL_FORMS" '
- 'name="binarytree_set-TOTAL_FORMS" type="hidden" value="5" />'
+ 'name="binarytree_set-TOTAL_FORMS" type="hidden" value="5">'
)
request = self.factory.get(reverse('admin:admin_inlines_binarytree_add'))
request.user = User(username='super', is_superuser=True)
@@ -322,11 +322,11 @@ class TestInline(TestDataMixin, TestCase):
modeladmin.inlines = [MinNumInline]
min_forms = (
'<input id="id_binarytree_set-MIN_NUM_FORMS" '
- 'name="binarytree_set-MIN_NUM_FORMS" type="hidden" value="%d" />'
+ 'name="binarytree_set-MIN_NUM_FORMS" type="hidden" value="%d">'
)
total_forms = (
'<input id="id_binarytree_set-TOTAL_FORMS" '
- 'name="binarytree_set-TOTAL_FORMS" type="hidden" value="%d" />'
+ 'name="binarytree_set-TOTAL_FORMS" type="hidden" value="%d">'
)
request = self.factory.get(reverse('admin:admin_inlines_binarytree_add'))
request.user = User(username='super', is_superuser=True)
@@ -345,13 +345,13 @@ class TestInline(TestDataMixin, TestCase):
self.assertContains(
response,
'<input id="id_nonautopkbook_set-0-rand_pk" '
- 'name="nonautopkbook_set-0-rand_pk" type="hidden" />',
+ 'name="nonautopkbook_set-0-rand_pk" type="hidden">',
html=True
)
self.assertContains(
response,
'<input id="id_nonautopkbook_set-2-0-rand_pk" '
- 'name="nonautopkbook_set-2-0-rand_pk" type="hidden" />',
+ 'name="nonautopkbook_set-2-0-rand_pk" type="hidden">',
html=True
)
@@ -360,13 +360,13 @@ class TestInline(TestDataMixin, TestCase):
self.assertContains(
response,
'<input id="id_nonautopkbookchild_set-0-nonautopkbook_ptr" '
- 'name="nonautopkbookchild_set-0-nonautopkbook_ptr" type="hidden" />',
+ 'name="nonautopkbookchild_set-0-nonautopkbook_ptr" type="hidden">',
html=True
)
self.assertContains(
response,
'<input id="id_nonautopkbookchild_set-2-nonautopkbook_ptr" '
- 'name="nonautopkbookchild_set-2-nonautopkbook_ptr" type="hidden" />',
+ 'name="nonautopkbookchild_set-2-nonautopkbook_ptr" type="hidden">',
html=True
)
@@ -375,13 +375,13 @@ class TestInline(TestDataMixin, TestCase):
self.assertContains(
response,
'<input class="vIntegerField" id="id_editablepkbook_set-0-manual_pk" '
- 'name="editablepkbook_set-0-manual_pk" type="number" />',
+ 'name="editablepkbook_set-0-manual_pk" type="number">',
html=True, count=1
)
self.assertContains(
response,
'<input class="vIntegerField" id="id_editablepkbook_set-2-0-manual_pk" '
- 'name="editablepkbook_set-2-0-manual_pk" type="number" />',
+ 'name="editablepkbook_set-2-0-manual_pk" type="number">',
html=True, count=1
)
@@ -614,7 +614,7 @@ class TestInlinePermissions(TestCase):
self.assertContains(response, '<h2>Inner2s</h2>')
self.assertContains(response, 'Add another Inner2')
self.assertContains(response, '<input type="hidden" id="id_inner2_set-TOTAL_FORMS" '
- 'value="3" name="inner2_set-TOTAL_FORMS" />', html=True)
+ 'value="3" name="inner2_set-TOTAL_FORMS">', html=True)
def test_inline_change_m2m_add_perm(self):
permission = Permission.objects.get(codename='add_book', content_type=self.book_ct)
@@ -634,11 +634,11 @@ class TestInlinePermissions(TestCase):
self.assertContains(response, '<h2>Author-book relationships</h2>')
self.assertContains(response, 'Add another Author-book relationship')
self.assertContains(response, '<input type="hidden" id="id_Author_books-TOTAL_FORMS" '
- 'value="4" name="Author_books-TOTAL_FORMS" />', html=True)
+ 'value="4" name="Author_books-TOTAL_FORMS">', html=True)
self.assertContains(
response,
'<input type="hidden" id="id_Author_books-0-id" value="%i" '
- 'name="Author_books-0-id" />' % self.author_book_auto_m2m_intermediate_id,
+ 'name="Author_books-0-id">' % self.author_book_auto_m2m_intermediate_id,
html=True
)
self.assertContains(response, 'id="id_Author_books-0-DELETE"')
@@ -654,12 +654,12 @@ class TestInlinePermissions(TestCase):
self.assertContains(
response,
'<input type="hidden" id="id_inner2_set-TOTAL_FORMS" value="3" '
- 'name="inner2_set-TOTAL_FORMS" />',
+ 'name="inner2_set-TOTAL_FORMS">',
html=True
)
self.assertNotContains(
response,
- '<input type="hidden" id="id_inner2_set-0-id" value="%i" name="inner2_set-0-id" />' % self.inner2_id,
+ '<input type="hidden" id="id_inner2_set-0-id" value="%i" name="inner2_set-0-id">' % self.inner2_id,
html=True
)
@@ -671,18 +671,18 @@ class TestInlinePermissions(TestCase):
self.assertContains(response, '<h2>Inner2s</h2>')
# Just the one form for existing instances
self.assertContains(
- response, '<input type="hidden" id="id_inner2_set-TOTAL_FORMS" value="1" name="inner2_set-TOTAL_FORMS" />',
+ response, '<input type="hidden" id="id_inner2_set-TOTAL_FORMS" value="1" name="inner2_set-TOTAL_FORMS">',
html=True
)
self.assertContains(
response,
- '<input type="hidden" id="id_inner2_set-0-id" value="%i" name="inner2_set-0-id" />' % self.inner2_id,
+ '<input type="hidden" id="id_inner2_set-0-id" value="%i" name="inner2_set-0-id">' % self.inner2_id,
html=True
)
# max-num 0 means we can't add new ones
self.assertContains(
response,
- '<input type="hidden" id="id_inner2_set-MAX_NUM_FORMS" value="0" name="inner2_set-MAX_NUM_FORMS" />',
+ '<input type="hidden" id="id_inner2_set-MAX_NUM_FORMS" value="0" name="inner2_set-MAX_NUM_FORMS">',
html=True
)
@@ -696,12 +696,12 @@ class TestInlinePermissions(TestCase):
self.assertContains(response, '<h2>Inner2s</h2>')
# One form for existing instance and three extra for new
self.assertContains(
- response, '<input type="hidden" id="id_inner2_set-TOTAL_FORMS" value="4" name="inner2_set-TOTAL_FORMS" />',
+ response, '<input type="hidden" id="id_inner2_set-TOTAL_FORMS" value="4" name="inner2_set-TOTAL_FORMS">',
html=True
)
self.assertContains(
response,
- '<input type="hidden" id="id_inner2_set-0-id" value="%i" name="inner2_set-0-id" />' % self.inner2_id,
+ '<input type="hidden" id="id_inner2_set-0-id" value="%i" name="inner2_set-0-id">' % self.inner2_id,
html=True
)
@@ -716,12 +716,12 @@ class TestInlinePermissions(TestCase):
# One form for existing instance only, no new
self.assertContains(
response,
- '<input type="hidden" id="id_inner2_set-TOTAL_FORMS" value="1" name="inner2_set-TOTAL_FORMS" />',
+ '<input type="hidden" id="id_inner2_set-TOTAL_FORMS" value="1" name="inner2_set-TOTAL_FORMS">',
html=True
)
self.assertContains(
response,
- '<input type="hidden" id="id_inner2_set-0-id" value="%i" name="inner2_set-0-id" />' % self.inner2_id,
+ '<input type="hidden" id="id_inner2_set-0-id" value="%i" name="inner2_set-0-id">' % self.inner2_id,
html=True
)
self.assertContains(response, 'id="id_inner2_set-0-DELETE"')
@@ -739,12 +739,12 @@ class TestInlinePermissions(TestCase):
# One form for existing instance only, three for new
self.assertContains(
response,
- '<input type="hidden" id="id_inner2_set-TOTAL_FORMS" value="4" name="inner2_set-TOTAL_FORMS" />',
+ '<input type="hidden" id="id_inner2_set-TOTAL_FORMS" value="4" name="inner2_set-TOTAL_FORMS">',
html=True
)
self.assertContains(
response,
- '<input type="hidden" id="id_inner2_set-0-id" value="%i" name="inner2_set-0-id" />' % self.inner2_id,
+ '<input type="hidden" id="id_inner2_set-0-id" value="%i" name="inner2_set-0-id">' % self.inner2_id,
html=True
)
self.assertContains(response, 'id="id_inner2_set-0-DELETE"')
diff --git a/tests/admin_utils/tests.py b/tests/admin_utils/tests.py
index aae8b74ae2..4d56313ae1 100644
--- a/tests/admin_utils/tests.py
+++ b/tests/admin_utils/tests.py
@@ -163,7 +163,7 @@ class UtilsTests(SimpleTestCase):
# Regression test for #13071: NullBooleanField has special
# handling.
display_value = display_for_field(None, models.NullBooleanField(), self.empty_value)
- expected = '<img src="%sadmin/img/icon-unknown.svg" alt="None" />' % settings.STATIC_URL
+ expected = '<img src="%sadmin/img/icon-unknown.svg" alt="None">' % settings.STATIC_URL
self.assertHTMLEqual(display_value, expected)
display_value = display_for_field(None, models.DecimalField(), self.empty_value)
@@ -204,11 +204,11 @@ class UtilsTests(SimpleTestCase):
def test_list_display_for_value_boolean(self):
self.assertEqual(
display_for_value(True, '', boolean=True),
- '<img src="/static/admin/img/icon-yes.svg" alt="True" />'
+ '<img src="/static/admin/img/icon-yes.svg" alt="True">'
)
self.assertEqual(
display_for_value(False, '', boolean=True),
- '<img src="/static/admin/img/icon-no.svg" alt="False" />'
+ '<img src="/static/admin/img/icon-no.svg" alt="False">'
)
self.assertEqual(display_for_value(True, ''), 'True')
self.assertEqual(display_for_value(False, ''), 'False')
diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py
index b8093c2971..a9746d9add 100644
--- a/tests/admin_views/tests.py
+++ b/tests/admin_views/tests.py
@@ -1027,7 +1027,7 @@ class AdminCustomTemplateTests(AdminViewBasicTestCase):
# When a site has multiple passwords in the browser's password manager,
# a browser pop up asks which user the new password is for. To prevent
# this, the username is added to the change password form.
- self.assertContains(response, '<input type="text" name="username" value="super" style="display: none" />')
+ self.assertContains(response, '<input type="text" name="username" value="super" style="display: none">')
def test_extended_bodyclass_template_index(self):
"""
@@ -2969,8 +2969,8 @@ class AdminViewListEditable(TestCase):
self.assertContains(
response,
'<div class="hiddenfields">\n'
- '<input type="hidden" name="form-0-id" value="%d" id="id_form-0-id" />'
- '<input type="hidden" name="form-1-id" value="%d" id="id_form-1-id" />\n</div>'
+ '<input type="hidden" name="form-0-id" value="%d" id="id_form-0-id">'
+ '<input type="hidden" name="form-1-id" value="%d" id="id_form-1-id">\n</div>'
% (story2.id, story1.id),
html=True
)
@@ -2999,8 +2999,8 @@ class AdminViewListEditable(TestCase):
self.assertContains(
response,
'<div class="hiddenfields">\n'
- '<input type="hidden" name="form-0-id" value="%d" id="id_form-0-id" />'
- '<input type="hidden" name="form-1-id" value="%d" id="id_form-1-id" />\n</div>'
+ '<input type="hidden" name="form-0-id" value="%d" id="id_form-0-id">'
+ '<input type="hidden" name="form-1-id" value="%d" id="id_form-1-id">\n</div>'
% (story2.id, story1.id),
html=True
)
@@ -3057,7 +3057,7 @@ class AdminSearchTest(TestCase):
"""
response = self.client.get(reverse('admin:auth_user_changelist') + '?q=joe&%s=id' % TO_FIELD_VAR)
self.assertContains(response, "\n1 user\n")
- self.assertContains(response, '<input type="hidden" name="%s" value="id"/>' % TO_FIELD_VAR, html=True)
+ self.assertContains(response, '<input type="hidden" name="%s" value="id">' % TO_FIELD_VAR, html=True)
def test_exact_matches(self):
response = self.client.get(reverse('admin:admin_views_recommendation_changelist') + '?q=bar')
@@ -4388,10 +4388,10 @@ class ReadonlyTest(AdminFieldExtractionMixin, TestCase):
self.assertContains(response, "Unknown coolness.")
self.assertContains(response, "foo")
- # Multiline text in a readonly field gets <br /> tags
- self.assertContains(response, 'Multiline<br />test<br />string')
- self.assertContains(response, '<div class="readonly">Multiline<br />html<br />content</div>', html=True)
- self.assertContains(response, 'InlineMultiline<br />test<br />string')
+ # Multiline text in a readonly field gets <br> tags
+ self.assertContains(response, 'Multiline<br>test<br>string')
+ self.assertContains(response, '<div class="readonly">Multiline<br>html<br>content</div>', html=True)
+ self.assertContains(response, 'InlineMultiline<br>test<br>string')
self.assertContains(response, formats.localize(datetime.date.today() - datetime.timedelta(days=7)))
@@ -4432,9 +4432,9 @@ class ReadonlyTest(AdminFieldExtractionMixin, TestCase):
)
response = self.client.get(reverse('admin:admin_views_post_change', args=(p.pk,)))
# Checking readonly field.
- self.assertContains(response, 'test<br /><br />test<br /><br />test<br /><br />test')
+ self.assertContains(response, 'test<br><br>test<br><br>test<br><br>test')
# Checking readonly field in inline.
- self.assertContains(response, 'test<br />link')
+ self.assertContains(response, 'test<br>link')
def test_readonly_post(self):
data = {
@@ -5267,7 +5267,7 @@ class AdminViewLogoutTests(TestCase):
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, 'admin/login.html')
self.assertEqual(response.request['PATH_INFO'], reverse('admin:login'))
- self.assertContains(response, '<input type="hidden" name="next" value="%s" />' % reverse('admin:index'))
+ self.assertContains(response, '<input type="hidden" name="next" value="%s">' % reverse('admin:index'))
@override_settings(ROOT_URLCONF='admin_views.urls')
diff --git a/tests/admin_widgets/tests.py b/tests/admin_widgets/tests.py
index 8c3f06670c..c0a9e1e844 100644
--- a/tests/admin_widgets/tests.py
+++ b/tests/admin_widgets/tests.py
@@ -274,13 +274,13 @@ class AdminDateWidgetTest(SimpleTestCase):
w = widgets.AdminDateWidget()
self.assertHTMLEqual(
w.render('test', datetime(2007, 12, 1, 9, 30)),
- '<input value="2007-12-01" type="text" class="vDateField" name="test" size="10" />',
+ '<input value="2007-12-01" type="text" class="vDateField" name="test" size="10">',
)
# pass attrs to widget
w = widgets.AdminDateWidget(attrs={'size': 20, 'class': 'myDateField'})
self.assertHTMLEqual(
w.render('test', datetime(2007, 12, 1, 9, 30)),
- '<input value="2007-12-01" type="text" class="myDateField" name="test" size="20" />',
+ '<input value="2007-12-01" type="text" class="myDateField" name="test" size="20">',
)
@@ -289,13 +289,13 @@ class AdminTimeWidgetTest(SimpleTestCase):
w = widgets.AdminTimeWidget()
self.assertHTMLEqual(
w.render('test', datetime(2007, 12, 1, 9, 30)),
- '<input value="09:30:00" type="text" class="vTimeField" name="test" size="8" />',
+ '<input value="09:30:00" type="text" class="vTimeField" name="test" size="8">',
)
# pass attrs to widget
w = widgets.AdminTimeWidget(attrs={'size': 20, 'class': 'myTimeField'})
self.assertHTMLEqual(
w.render('test', datetime(2007, 12, 1, 9, 30)),
- '<input value="09:30:00" type="text" class="myTimeField" name="test" size="20" />',
+ '<input value="09:30:00" type="text" class="myTimeField" name="test" size="20">',
)
@@ -306,9 +306,9 @@ class AdminSplitDateTimeWidgetTest(SimpleTestCase):
w.render('test', datetime(2007, 12, 1, 9, 30)),
'<p class="datetime">'
'Date: <input value="2007-12-01" type="text" class="vDateField" '
- 'name="test_0" size="10" /><br />'
+ 'name="test_0" size="10"><br>'
'Time: <input value="09:30:00" type="text" class="vTimeField" '
- 'name="test_1" size="8" /></p>'
+ 'name="test_1" size="8"></p>'
)
def test_localization(self):
@@ -320,9 +320,9 @@ class AdminSplitDateTimeWidgetTest(SimpleTestCase):
w.render('test', datetime(2007, 12, 1, 9, 30)),
'<p class="datetime">'
'Datum: <input value="01.12.2007" type="text" '
- 'class="vDateField" name="test_0"size="10" /><br />'
+ 'class="vDateField" name="test_0"size="10"><br>'
'Zeit: <input value="09:30:00" type="text" class="vTimeField" '
- 'name="test_1" size="8" /></p>'
+ 'name="test_1" size="8"></p>'
)
@@ -331,14 +331,14 @@ class AdminURLWidgetTest(SimpleTestCase):
w = widgets.AdminURLFieldWidget()
self.assertHTMLEqual(
w.render('test', ''),
- '<input class="vURLField" name="test" type="url" />'
+ '<input class="vURLField" name="test" type="url">'
)
self.assertHTMLEqual(
w.render('test', 'http://example.com'),
'<p class="url">Currently:<a href="http://example.com">'
- 'http://example.com</a><br />'
+ 'http://example.com</a><br>'
'Change:<input class="vURLField" name="test" type="url" '
- 'value="http://example.com" /></p>'
+ 'value="http://example.com"></p>'
)
def test_render_idn(self):
@@ -346,9 +346,9 @@ class AdminURLWidgetTest(SimpleTestCase):
self.assertHTMLEqual(
w.render('test', 'http://example-äüö.com'),
'<p class="url">Currently: <a href="http://xn--example--7za4pnc.com">'
- 'http://example-äüö.com</a><br />'
+ 'http://example-äüö.com</a><br>'
'Change:<input class="vURLField" name="test" type="url" '
- 'value="http://example-äüö.com" /></p>'
+ 'value="http://example-äüö.com"></p>'
)
def test_render_quoting(self):
@@ -420,15 +420,15 @@ class AdminFileWidgetTests(TestDataMixin, TestCase):
'<p class="file-upload">Currently: <a href="%(STORAGE_URL)salbums/'
r'hybrid_theory.jpg">albums\hybrid_theory.jpg</a> '
'<span class="clearable-file-input">'
- '<input type="checkbox" name="test-clear" id="test-clear_id" /> '
- '<label for="test-clear_id">Clear</label></span><br />'
- 'Change: <input type="file" name="test" /></p>' % {
+ '<input type="checkbox" name="test-clear" id="test-clear_id"> '
+ '<label for="test-clear_id">Clear</label></span><br>'
+ 'Change: <input type="file" name="test"></p>' % {
'STORAGE_URL': default_storage.url(''),
},
)
self.assertHTMLEqual(
w.render('test', SimpleUploadedFile('test', b'content')),
- '<input type="file" name="test" />',
+ '<input type="file" name="test">',
)
def test_render_required(self):
@@ -437,8 +437,8 @@ class AdminFileWidgetTests(TestDataMixin, TestCase):
self.assertHTMLEqual(
widget.render('test', self.album.cover_art),
'<p class="file-upload">Currently: <a href="%(STORAGE_URL)salbums/'
- r'hybrid_theory.jpg">albums\hybrid_theory.jpg</a><br />'
- 'Change: <input type="file" name="test" /></p>' % {
+ r'hybrid_theory.jpg">albums\hybrid_theory.jpg</a><br>'
+ 'Change: <input type="file" name="test"></p>' % {
'STORAGE_URL': default_storage.url(''),
},
)
@@ -457,7 +457,7 @@ class AdminFileWidgetTests(TestDataMixin, TestCase):
)
self.assertNotContains(
response,
- '<input type="file" name="cover_art" id="id_cover_art" />',
+ '<input type="file" name="cover_art" id="id_cover_art">',
html=True,
)
response = self.client.get(reverse('admin:admin_widgets_album_add'))
@@ -482,7 +482,7 @@ class ForeignKeyRawIdWidgetTest(TestCase):
self.assertHTMLEqual(
w.render('test', band.pk, attrs={}),
'<input type="text" name="test" value="%(bandpk)s" '
- 'class="vForeignKeyRawIdAdminField" />'
+ 'class="vForeignKeyRawIdAdminField">'
'<a href="/admin_widgets/band/?_to_field=id" class="related-lookup" '
'id="lookup_id_test" title="Lookup"></a>&nbsp;<strong>'
'<a href="/admin_widgets/band/%(bandpk)s/change/">Linkin Park</a>'
@@ -502,7 +502,7 @@ class ForeignKeyRawIdWidgetTest(TestCase):
self.assertHTMLEqual(
w.render('test', core.parent_id, attrs={}),
'<input type="text" name="test" value="86" '
- 'class="vForeignKeyRawIdAdminField" />'
+ 'class="vForeignKeyRawIdAdminField">'
'<a href="/admin_widgets/inventory/?_to_field=barcode" '
'class="related-lookup" id="lookup_id_test" title="Lookup"></a>'
'&nbsp;<strong><a href="/admin_widgets/inventory/%(pk)s/change/">'
@@ -519,7 +519,7 @@ class ForeignKeyRawIdWidgetTest(TestCase):
w = widgets.ForeignKeyRawIdWidget(rel, widget_admin_site)
self.assertHTMLEqual(
w.render('honeycomb_widget', big_honeycomb.pk, attrs={}),
- '<input type="text" name="honeycomb_widget" value="%(hcombpk)s" />'
+ '<input type="text" name="honeycomb_widget" value="%(hcombpk)s">'
'&nbsp;<strong>%(hcomb)s</strong>'
% {'hcombpk': big_honeycomb.pk, 'hcomb': big_honeycomb}
)
@@ -534,7 +534,7 @@ class ForeignKeyRawIdWidgetTest(TestCase):
w = widgets.ForeignKeyRawIdWidget(rel, widget_admin_site)
self.assertHTMLEqual(
w.render('individual_widget', subject1.pk, attrs={}),
- '<input type="text" name="individual_widget" value="%(subj1pk)s" />'
+ '<input type="text" name="individual_widget" value="%(subj1pk)s">'
'&nbsp;<strong>%(subj1)s</strong>'
% {'subj1pk': subject1.pk, 'subj1': subject1}
)
@@ -552,7 +552,7 @@ class ForeignKeyRawIdWidgetTest(TestCase):
)
self.assertHTMLEqual(
w.render('test', child_of_hidden.parent_id, attrs={}),
- '<input type="text" name="test" value="93" class="vForeignKeyRawIdAdminField" />'
+ '<input type="text" name="test" value="93" class="vForeignKeyRawIdAdminField">'
'<a href="/admin_widgets/inventory/?_to_field=barcode" '
'class="related-lookup" id="lookup_id_test" title="Lookup"></a>'
'&nbsp;<strong><a href="/admin_widgets/inventory/%(pk)s/change/">'
@@ -574,7 +574,7 @@ class ManyToManyRawIdWidgetTest(TestCase):
w = widgets.ManyToManyRawIdWidget(rel, widget_admin_site)
self.assertHTMLEqual(
w.render('test', [m1.pk, m2.pk], attrs={}), (
- '<input type="text" name="test" value="%(m1pk)s,%(m2pk)s" class="vManyToManyRawIdAdminField" />'
+ '<input type="text" name="test" value="%(m1pk)s,%(m2pk)s" class="vManyToManyRawIdAdminField">'
'<a href="/admin_widgets/member/" class="related-lookup" id="lookup_id_test" title="Lookup"></a>'
) % {'m1pk': m1.pk, 'm2pk': m2.pk}
)
@@ -599,12 +599,12 @@ class ManyToManyRawIdWidgetTest(TestCase):
w = widgets.ManyToManyRawIdWidget(rel, widget_admin_site)
self.assertHTMLEqual(
w.render('company_widget1', [c1.pk, c2.pk], attrs={}),
- '<input type="text" name="company_widget1" value="%(c1pk)s,%(c2pk)s" />' % {'c1pk': c1.pk, 'c2pk': c2.pk}
+ '<input type="text" name="company_widget1" value="%(c1pk)s,%(c2pk)s">' % {'c1pk': c1.pk, 'c2pk': c2.pk}
)
self.assertHTMLEqual(
w.render('company_widget2', [c1.pk]),
- '<input type="text" name="company_widget2" value="%(c1pk)s" />' % {'c1pk': c1.pk}
+ '<input type="text" name="company_widget2" value="%(c1pk)s">' % {'c1pk': c1.pk}
)
diff --git a/tests/csrf_tests/views.py b/tests/csrf_tests/views.py
index 720de610e0..89d1189e0d 100644
--- a/tests/csrf_tests/views.py
+++ b/tests/csrf_tests/views.py
@@ -8,7 +8,7 @@ from django.views.decorators.csrf import ensure_csrf_cookie
def post_form_view(request):
"""Return a POST form (without a token)."""
return HttpResponse(content="""
-<html><body><h1>\u00a1Unicode!<form method="post"><input type="text" /></form></body></html>
+<html><body><h1>\u00a1Unicode!<form method="post"><input type="text"></form></body></html>
""", mimetype='text/html')
diff --git a/tests/forms_tests/field_tests/test_charfield.py b/tests/forms_tests/field_tests/test_charfield.py
index ad91070571..cbacf4d0d7 100644
--- a/tests/forms_tests/field_tests/test_charfield.py
+++ b/tests/forms_tests/field_tests/test_charfield.py
@@ -145,7 +145,7 @@ class CharFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
def test_charfield_disabled(self):
f = CharField(disabled=True)
- self.assertWidgetRendersTo(f, '<input type="text" name="f" id="id_f" disabled required />')
+ self.assertWidgetRendersTo(f, '<input type="text" name="f" id="id_f" disabled required>')
def test_null_characters_prohibited(self):
f = CharField()
diff --git a/tests/forms_tests/field_tests/test_datefield.py b/tests/forms_tests/field_tests/test_datefield.py
index a8002d463c..bcc7db193a 100644
--- a/tests/forms_tests/field_tests/test_datefield.py
+++ b/tests/forms_tests/field_tests/test_datefield.py
@@ -22,7 +22,7 @@ class DateFieldTest(SimpleTestCase):
# accept the input from the "as_hidden" rendering as well.
self.assertHTMLEqual(
a['mydate'].as_hidden(),
- '<input type="hidden" name="mydate" value="2008-4-1" id="id_mydate" />',
+ '<input type="hidden" name="mydate" value="2008-4-1" id="id_mydate">',
)
b = GetDate({'mydate': '2008-4-1'})
diff --git a/tests/forms_tests/field_tests/test_decimalfield.py b/tests/forms_tests/field_tests/test_decimalfield.py
index 4e1828d53d..44ebebcf75 100644
--- a/tests/forms_tests/field_tests/test_decimalfield.py
+++ b/tests/forms_tests/field_tests/test_decimalfield.py
@@ -11,7 +11,7 @@ class DecimalFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
def test_decimalfield_1(self):
f = DecimalField(max_digits=4, decimal_places=2)
- self.assertWidgetRendersTo(f, '<input id="id_f" step="0.01" type="number" name="f" required />')
+ self.assertWidgetRendersTo(f, '<input id="id_f" step="0.01" type="number" name="f" required>')
with self.assertRaisesMessage(ValidationError, "'This field is required.'"):
f.clean('')
with self.assertRaisesMessage(ValidationError, "'This field is required.'"):
@@ -78,7 +78,7 @@ class DecimalFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
)
self.assertWidgetRendersTo(
f,
- '<input step="0.01" name="f" min="0.5" max="1.5" type="number" id="id_f" required />',
+ '<input step="0.01" name="f" min="0.5" max="1.5" type="number" id="id_f" required>',
)
with self.assertRaisesMessage(ValidationError, "'Ensure this value is less than or equal to 1.5.'"):
f.clean('1.6')
@@ -136,7 +136,7 @@ class DecimalFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
f = DecimalField(max_digits=20)
self.assertEqual(f.widget_attrs(NumberInput()), {'step': 'any'})
f = DecimalField(max_digits=6, widget=NumberInput(attrs={'step': '0.01'}))
- self.assertWidgetRendersTo(f, '<input step="0.01" name="f" type="number" id="id_f" required />')
+ self.assertWidgetRendersTo(f, '<input step="0.01" name="f" type="number" id="id_f" required>')
def test_decimalfield_localized(self):
"""
@@ -144,7 +144,7 @@ class DecimalFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
number input specific attributes.
"""
f = DecimalField(localize=True)
- self.assertWidgetRendersTo(f, '<input id="id_f" name="f" type="text" required />')
+ self.assertWidgetRendersTo(f, '<input id="id_f" name="f" type="text" required>')
def test_decimalfield_changed(self):
f = DecimalField(max_digits=2, decimal_places=2)
diff --git a/tests/forms_tests/field_tests/test_emailfield.py b/tests/forms_tests/field_tests/test_emailfield.py
index 15481689b0..826524ae62 100644
--- a/tests/forms_tests/field_tests/test_emailfield.py
+++ b/tests/forms_tests/field_tests/test_emailfield.py
@@ -8,7 +8,7 @@ class EmailFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
def test_emailfield_1(self):
f = EmailField()
- self.assertWidgetRendersTo(f, '<input type="email" name="f" id="id_f" required />')
+ self.assertWidgetRendersTo(f, '<input type="email" name="f" id="id_f" required>')
with self.assertRaisesMessage(ValidationError, "'This field is required.'"):
f.clean('')
with self.assertRaisesMessage(ValidationError, "'This field is required.'"):
@@ -41,7 +41,7 @@ class EmailFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
f = EmailField(min_length=10, max_length=15)
self.assertWidgetRendersTo(
f,
- '<input id="id_f" type="email" name="f" maxlength="15" minlength="10" required />',
+ '<input id="id_f" type="email" name="f" maxlength="15" minlength="10" required>',
)
with self.assertRaisesMessage(ValidationError, "'Ensure this value has at least 10 characters (it has 9).'"):
f.clean('a@foo.com')
diff --git a/tests/forms_tests/field_tests/test_floatfield.py b/tests/forms_tests/field_tests/test_floatfield.py
index b36942afa4..531396868a 100644
--- a/tests/forms_tests/field_tests/test_floatfield.py
+++ b/tests/forms_tests/field_tests/test_floatfield.py
@@ -10,7 +10,7 @@ class FloatFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
def test_floatfield_1(self):
f = FloatField()
- self.assertWidgetRendersTo(f, '<input step="any" type="number" name="f" id="id_f" required />')
+ self.assertWidgetRendersTo(f, '<input step="any" type="number" name="f" id="id_f" required>')
with self.assertRaisesMessage(ValidationError, "'This field is required.'"):
f.clean('')
with self.assertRaisesMessage(ValidationError, "'This field is required.'"):
@@ -49,7 +49,7 @@ class FloatFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
f = FloatField(max_value=1.5, min_value=0.5)
self.assertWidgetRendersTo(
f,
- '<input step="any" name="f" min="0.5" max="1.5" type="number" id="id_f" required />',
+ '<input step="any" name="f" min="0.5" max="1.5" type="number" id="id_f" required>',
)
with self.assertRaisesMessage(ValidationError, "'Ensure this value is less than or equal to 1.5.'"):
f.clean('1.6')
@@ -64,7 +64,7 @@ class FloatFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
f = FloatField(widget=NumberInput(attrs={'step': 0.01, 'max': 1.0, 'min': 0.0}))
self.assertWidgetRendersTo(
f,
- '<input step="0.01" name="f" min="0.0" max="1.0" type="number" id="id_f" required />',
+ '<input step="0.01" name="f" min="0.0" max="1.0" type="number" id="id_f" required>',
)
def test_floatfield_localized(self):
@@ -73,7 +73,7 @@ class FloatFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
number input specific attributes.
"""
f = FloatField(localize=True)
- self.assertWidgetRendersTo(f, '<input id="id_f" name="f" type="text" required />')
+ self.assertWidgetRendersTo(f, '<input id="id_f" name="f" type="text" required>')
def test_floatfield_changed(self):
f = FloatField()
diff --git a/tests/forms_tests/field_tests/test_integerfield.py b/tests/forms_tests/field_tests/test_integerfield.py
index f89885027b..a0cde40910 100644
--- a/tests/forms_tests/field_tests/test_integerfield.py
+++ b/tests/forms_tests/field_tests/test_integerfield.py
@@ -8,7 +8,7 @@ class IntegerFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
def test_integerfield_1(self):
f = IntegerField()
- self.assertWidgetRendersTo(f, '<input type="number" name="f" id="id_f" required />')
+ self.assertWidgetRendersTo(f, '<input type="number" name="f" id="id_f" required>')
with self.assertRaisesMessage(ValidationError, "'This field is required.'"):
f.clean('')
with self.assertRaisesMessage(ValidationError, "'This field is required.'"):
@@ -50,7 +50,7 @@ class IntegerFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
def test_integerfield_3(self):
f = IntegerField(max_value=10)
- self.assertWidgetRendersTo(f, '<input max="10" type="number" name="f" id="id_f" required />')
+ self.assertWidgetRendersTo(f, '<input max="10" type="number" name="f" id="id_f" required>')
with self.assertRaisesMessage(ValidationError, "'This field is required.'"):
f.clean(None)
self.assertEqual(1, f.clean(1))
@@ -65,7 +65,7 @@ class IntegerFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
def test_integerfield_4(self):
f = IntegerField(min_value=10)
- self.assertWidgetRendersTo(f, '<input id="id_f" type="number" name="f" min="10" required />')
+ self.assertWidgetRendersTo(f, '<input id="id_f" type="number" name="f" min="10" required>')
with self.assertRaisesMessage(ValidationError, "'This field is required.'"):
f.clean(None)
with self.assertRaisesMessage(ValidationError, "'Ensure this value is greater than or equal to 10.'"):
@@ -79,7 +79,7 @@ class IntegerFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
def test_integerfield_5(self):
f = IntegerField(min_value=10, max_value=20)
- self.assertWidgetRendersTo(f, '<input id="id_f" max="20" type="number" name="f" min="10" required />')
+ self.assertWidgetRendersTo(f, '<input id="id_f" max="20" type="number" name="f" min="10" required>')
with self.assertRaisesMessage(ValidationError, "'This field is required.'"):
f.clean(None)
with self.assertRaisesMessage(ValidationError, "'Ensure this value is greater than or equal to 10.'"):
@@ -100,7 +100,7 @@ class IntegerFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
number input specific attributes.
"""
f1 = IntegerField(localize=True)
- self.assertWidgetRendersTo(f1, '<input id="id_f" name="f" type="text" required />')
+ self.assertWidgetRendersTo(f1, '<input id="id_f" name="f" type="text" required>')
def test_integerfield_float(self):
f = IntegerField()
diff --git a/tests/forms_tests/field_tests/test_multivaluefield.py b/tests/forms_tests/field_tests/test_multivaluefield.py
index edb32957e3..fb99451f6c 100644
--- a/tests/forms_tests/field_tests/test_multivaluefield.py
+++ b/tests/forms_tests/field_tests/test_multivaluefield.py
@@ -128,15 +128,15 @@ class MultiValueFieldTest(SimpleTestCase):
form.as_table(),
"""
<tr><th><label for="id_field1_0">Field1:</label></th>
- <td><input type="text" name="field1_0" id="id_field1_0" required />
+ <td><input type="text" name="field1_0" id="id_field1_0" required>
<select multiple name="field1_1" id="id_field1_1" required>
<option value="J">John</option>
<option value="P">Paul</option>
<option value="G">George</option>
<option value="R">Ringo</option>
</select>
- <input type="text" name="field1_2_0" id="id_field1_2_0" required />
- <input type="text" name="field1_2_1" id="id_field1_2_1" required /></td></tr>
+ <input type="text" name="field1_2_0" id="id_field1_2_0" required>
+ <input type="text" name="field1_2_1" id="id_field1_2_1" required></td></tr>
""",
)
@@ -151,15 +151,15 @@ class MultiValueFieldTest(SimpleTestCase):
form.as_table(),
"""
<tr><th><label for="id_field1_0">Field1:</label></th>
- <td><input type="text" name="field1_0" value="some text" id="id_field1_0" required />
+ <td><input type="text" name="field1_0" value="some text" id="id_field1_0" required>
<select multiple name="field1_1" id="id_field1_1" required>
<option value="J" selected>John</option>
<option value="P" selected>Paul</option>
<option value="G">George</option>
<option value="R">Ringo</option>
</select>
- <input type="text" name="field1_2_0" value="2007-04-25" id="id_field1_2_0" required />
- <input type="text" name="field1_2_1" value="06:24:00" id="id_field1_2_1" required /></td></tr>
+ <input type="text" name="field1_2_0" value="2007-04-25" id="id_field1_2_0" required>
+ <input type="text" name="field1_2_1" value="06:24:00" id="id_field1_2_1" required></td></tr>
""",
)
diff --git a/tests/forms_tests/field_tests/test_nullbooleanfield.py b/tests/forms_tests/field_tests/test_nullbooleanfield.py
index ff57394f07..55812612c9 100644
--- a/tests/forms_tests/field_tests/test_nullbooleanfield.py
+++ b/tests/forms_tests/field_tests/test_nullbooleanfield.py
@@ -27,8 +27,8 @@ class NullBooleanFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
hidden_nullbool2 = NullBooleanField(widget=HiddenInput, initial=False)
f = HiddenNullBooleanForm()
self.assertHTMLEqual(
- '<input type="hidden" name="hidden_nullbool1" value="True" id="id_hidden_nullbool1" />'
- '<input type="hidden" name="hidden_nullbool2" value="False" id="id_hidden_nullbool2" />',
+ '<input type="hidden" name="hidden_nullbool1" value="True" id="id_hidden_nullbool1">'
+ '<input type="hidden" name="hidden_nullbool2" value="False" id="id_hidden_nullbool2">',
str(f)
)
diff --git a/tests/forms_tests/field_tests/test_urlfield.py b/tests/forms_tests/field_tests/test_urlfield.py
index 2ecf189112..52f1080cdc 100644
--- a/tests/forms_tests/field_tests/test_urlfield.py
+++ b/tests/forms_tests/field_tests/test_urlfield.py
@@ -8,7 +8,7 @@ class URLFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
def test_urlfield_1(self):
f = URLField()
- self.assertWidgetRendersTo(f, '<input type="url" name="f" id="id_f" required />')
+ self.assertWidgetRendersTo(f, '<input type="url" name="f" id="id_f" required>')
with self.assertRaisesMessage(ValidationError, "'This field is required.'"):
f.clean('')
with self.assertRaisesMessage(ValidationError, "'This field is required.'"):
@@ -88,7 +88,7 @@ class URLFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
def test_urlfield_5(self):
f = URLField(min_length=15, max_length=20)
- self.assertWidgetRendersTo(f, '<input id="id_f" type="url" name="f" maxlength="20" minlength="15" required />')
+ self.assertWidgetRendersTo(f, '<input id="id_f" type="url" name="f" maxlength="20" minlength="15" required>')
with self.assertRaisesMessage(ValidationError, "'Ensure this value has at least 15 characters (it has 12).'"):
f.clean('http://f.com')
self.assertEqual('http://example.com', f.clean('http://example.com'))
diff --git a/tests/forms_tests/tests/test_forms.py b/tests/forms_tests/tests/test_forms.py
index 4ec21f869e..1f883e1a28 100644
--- a/tests/forms_tests/tests/test_forms.py
+++ b/tests/forms_tests/tests/test_forms.py
@@ -59,15 +59,15 @@ class FormsTestCase(SimpleTestCase):
self.assertEqual(p.cleaned_data["birthday"], datetime.date(1940, 10, 9))
self.assertHTMLEqual(
str(p['first_name']),
- '<input type="text" name="first_name" value="John" id="id_first_name" required />'
+ '<input type="text" name="first_name" value="John" id="id_first_name" required>'
)
self.assertHTMLEqual(
str(p['last_name']),
- '<input type="text" name="last_name" value="Lennon" id="id_last_name" required />'
+ '<input type="text" name="last_name" value="Lennon" id="id_last_name" required>'
)
self.assertHTMLEqual(
str(p['birthday']),
- '<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required />'
+ '<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required>'
)
msg = "Key 'nonexistentfield' not found in 'Person'. Choices are: birthday, first_name, last_name."
@@ -81,9 +81,9 @@ class FormsTestCase(SimpleTestCase):
self.assertHTMLEqual(
'\n'.join(form_output),
- """<input type="text" name="first_name" value="John" id="id_first_name" required />
-<input type="text" name="last_name" value="Lennon" id="id_last_name" required />
-<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required />"""
+ """<input type="text" name="first_name" value="John" id="id_first_name" required>
+<input type="text" name="last_name" value="Lennon" id="id_last_name" required>
+<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required>"""
)
form_output = []
@@ -99,11 +99,11 @@ class FormsTestCase(SimpleTestCase):
self.assertHTMLEqual(
str(p),
"""<tr><th><label for="id_first_name">First name:</label></th><td>
-<input type="text" name="first_name" value="John" id="id_first_name" required /></td></tr>
+<input type="text" name="first_name" value="John" id="id_first_name" required></td></tr>
<tr><th><label for="id_last_name">Last name:</label></th><td>
-<input type="text" name="last_name" value="Lennon" id="id_last_name" required /></td></tr>
+<input type="text" name="last_name" value="Lennon" id="id_last_name" required></td></tr>
<tr><th><label for="id_birthday">Birthday:</label></th><td>
-<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required /></td></tr>"""
+<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required></td></tr>"""
)
def test_empty_dict(self):
@@ -119,49 +119,49 @@ class FormsTestCase(SimpleTestCase):
str(p),
"""<tr><th><label for="id_first_name">First name:</label></th><td>
<ul class="errorlist"><li>This field is required.</li></ul>
-<input type="text" name="first_name" id="id_first_name" required /></td></tr>
+<input type="text" name="first_name" id="id_first_name" required></td></tr>
<tr><th><label for="id_last_name">Last name:</label></th>
<td><ul class="errorlist"><li>This field is required.</li></ul>
-<input type="text" name="last_name" id="id_last_name" required /></td></tr>
+<input type="text" name="last_name" id="id_last_name" required></td></tr>
<tr><th><label for="id_birthday">Birthday:</label></th><td>
<ul class="errorlist"><li>This field is required.</li></ul>
-<input type="text" name="birthday" id="id_birthday" required /></td></tr>"""
+<input type="text" name="birthday" id="id_birthday" required></td></tr>"""
)
self.assertHTMLEqual(
p.as_table(),
"""<tr><th><label for="id_first_name">First name:</label></th><td>
<ul class="errorlist"><li>This field is required.</li></ul>
-<input type="text" name="first_name" id="id_first_name" required /></td></tr>
+<input type="text" name="first_name" id="id_first_name" required></td></tr>
<tr><th><label for="id_last_name">Last name:</label></th>
<td><ul class="errorlist"><li>This field is required.</li></ul>
-<input type="text" name="last_name" id="id_last_name" required /></td></tr>
+<input type="text" name="last_name" id="id_last_name" required></td></tr>
<tr><th><label for="id_birthday">Birthday:</label></th>
<td><ul class="errorlist"><li>This field is required.</li></ul>
-<input type="text" name="birthday" id="id_birthday" required /></td></tr>"""
+<input type="text" name="birthday" id="id_birthday" required></td></tr>"""
)
self.assertHTMLEqual(
p.as_ul(),
"""<li><ul class="errorlist"><li>This field is required.</li></ul>
<label for="id_first_name">First name:</label>
-<input type="text" name="first_name" id="id_first_name" required /></li>
+<input type="text" name="first_name" id="id_first_name" required></li>
<li><ul class="errorlist"><li>This field is required.</li></ul>
<label for="id_last_name">Last name:</label>
-<input type="text" name="last_name" id="id_last_name" required /></li>
+<input type="text" name="last_name" id="id_last_name" required></li>
<li><ul class="errorlist"><li>This field is required.</li></ul>
<label for="id_birthday">Birthday:</label>
-<input type="text" name="birthday" id="id_birthday" required /></li>"""
+<input type="text" name="birthday" id="id_birthday" required></li>"""
)
self.assertHTMLEqual(
p.as_p(),
"""<ul class="errorlist"><li>This field is required.</li></ul>
<p><label for="id_first_name">First name:</label>
-<input type="text" name="first_name" id="id_first_name" required /></p>
+<input type="text" name="first_name" id="id_first_name" required></p>
<ul class="errorlist"><li>This field is required.</li></ul>
<p><label for="id_last_name">Last name:</label>
-<input type="text" name="last_name" id="id_last_name" required /></p>
+<input type="text" name="last_name" id="id_last_name" required></p>
<ul class="errorlist"><li>This field is required.</li></ul>
<p><label for="id_birthday">Birthday:</label>
-<input type="text" name="birthday" id="id_birthday" required /></p>"""
+<input type="text" name="birthday" id="id_birthday" required></p>"""
)
def test_empty_querydict_args(self):
@@ -185,38 +185,38 @@ class FormsTestCase(SimpleTestCase):
self.assertHTMLEqual(
str(p),
"""<tr><th><label for="id_first_name">First name:</label></th><td>
-<input type="text" name="first_name" id="id_first_name" required /></td></tr>
+<input type="text" name="first_name" id="id_first_name" required></td></tr>
<tr><th><label for="id_last_name">Last name:</label></th><td>
-<input type="text" name="last_name" id="id_last_name" required /></td></tr>
+<input type="text" name="last_name" id="id_last_name" required></td></tr>
<tr><th><label for="id_birthday">Birthday:</label></th><td>
-<input type="text" name="birthday" id="id_birthday" required /></td></tr>"""
+<input type="text" name="birthday" id="id_birthday" required></td></tr>"""
)
self.assertHTMLEqual(
p.as_table(),
"""<tr><th><label for="id_first_name">First name:</label></th><td>
-<input type="text" name="first_name" id="id_first_name" required /></td></tr>
+<input type="text" name="first_name" id="id_first_name" required></td></tr>
<tr><th><label for="id_last_name">Last name:</label></th><td>
-<input type="text" name="last_name" id="id_last_name" required /></td></tr>
+<input type="text" name="last_name" id="id_last_name" required></td></tr>
<tr><th><label for="id_birthday">Birthday:</label></th><td>
-<input type="text" name="birthday" id="id_birthday" required /></td></tr>"""
+<input type="text" name="birthday" id="id_birthday" required></td></tr>"""
)
self.assertHTMLEqual(
p.as_ul(),
"""<li><label for="id_first_name">First name:</label>
-<input type="text" name="first_name" id="id_first_name" required /></li>
+<input type="text" name="first_name" id="id_first_name" required></li>
<li><label for="id_last_name">Last name:</label>
-<input type="text" name="last_name" id="id_last_name" required /></li>
+<input type="text" name="last_name" id="id_last_name" required></li>
<li><label for="id_birthday">Birthday:</label>
-<input type="text" name="birthday" id="id_birthday" required /></li>"""
+<input type="text" name="birthday" id="id_birthday" required></li>"""
)
self.assertHTMLEqual(
p.as_p(),
"""<p><label for="id_first_name">First name:</label>
-<input type="text" name="first_name" id="id_first_name" required /></p>
+<input type="text" name="first_name" id="id_first_name" required></p>
<p><label for="id_last_name">Last name:</label>
-<input type="text" name="last_name" id="id_last_name" required /></p>
+<input type="text" name="last_name" id="id_last_name" required></p>
<p><label for="id_birthday">Birthday:</label>
-<input type="text" name="birthday" id="id_birthday" required /></p>"""
+<input type="text" name="birthday" id="id_birthday" required></p>"""
)
def test_unicode_values(self):
@@ -229,33 +229,33 @@ class FormsTestCase(SimpleTestCase):
self.assertHTMLEqual(
p.as_table(),
'<tr><th><label for="id_first_name">First name:</label></th><td>'
- '<input type="text" name="first_name" value="John" id="id_first_name" required /></td></tr>\n'
+ '<input type="text" name="first_name" value="John" id="id_first_name" required></td></tr>\n'
'<tr><th><label for="id_last_name">Last name:</label>'
'</th><td><input type="text" name="last_name" '
'value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111"'
- 'id="id_last_name" required /></td></tr>\n'
+ 'id="id_last_name" required></td></tr>\n'
'<tr><th><label for="id_birthday">Birthday:</label></th><td>'
- '<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required /></td></tr>'
+ '<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required></td></tr>'
)
self.assertHTMLEqual(
p.as_ul(),
'<li><label for="id_first_name">First name:</label> '
- '<input type="text" name="first_name" value="John" id="id_first_name" required /></li>\n'
+ '<input type="text" name="first_name" value="John" id="id_first_name" required></li>\n'
'<li><label for="id_last_name">Last name:</label> '
'<input type="text" name="last_name" '
- 'value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" id="id_last_name" required /></li>\n'
+ 'value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" id="id_last_name" required></li>\n'
'<li><label for="id_birthday">Birthday:</label> '
- '<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required /></li>'
+ '<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required></li>'
)
self.assertHTMLEqual(
p.as_p(),
'<p><label for="id_first_name">First name:</label> '
- '<input type="text" name="first_name" value="John" id="id_first_name" required /></p>\n'
+ '<input type="text" name="first_name" value="John" id="id_first_name" required></p>\n'
'<p><label for="id_last_name">Last name:</label> '
'<input type="text" name="last_name" '
- 'value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" id="id_last_name" required /></p>\n'
+ 'value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" id="id_last_name" required></p>\n'
'<p><label for="id_birthday">Birthday:</label> '
- '<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required /></p>'
+ '<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required></p>'
)
p = Person({'last_name': 'Lennon'})
@@ -277,10 +277,10 @@ class FormsTestCase(SimpleTestCase):
p = Person()
self.assertHTMLEqual(
str(p['first_name']),
- '<input type="text" name="first_name" id="id_first_name" required />',
+ '<input type="text" name="first_name" id="id_first_name" required>',
)
- self.assertHTMLEqual(str(p['last_name']), '<input type="text" name="last_name" id="id_last_name" required />')
- self.assertHTMLEqual(str(p['birthday']), '<input type="text" name="birthday" id="id_birthday" required />')
+ self.assertHTMLEqual(str(p['last_name']), '<input type="text" name="last_name" id="id_last_name" required>')
+ self.assertHTMLEqual(str(p['birthday']), '<input type="text" name="birthday" id="id_birthday" required>')
def test_cleaned_data_only_fields(self):
# cleaned_data will always *only* contain a key for fields defined in the
@@ -340,29 +340,29 @@ class FormsTestCase(SimpleTestCase):
self.assertHTMLEqual(
p.as_table(),
"""<tr><th><label for="first_name_id">First name:</label></th><td>
-<input type="text" name="first_name" id="first_name_id" required /></td></tr>
+<input type="text" name="first_name" id="first_name_id" required></td></tr>
<tr><th><label for="last_name_id">Last name:</label></th><td>
-<input type="text" name="last_name" id="last_name_id" required /></td></tr>
+<input type="text" name="last_name" id="last_name_id" required></td></tr>
<tr><th><label for="birthday_id">Birthday:</label></th><td>
-<input type="text" name="birthday" id="birthday_id" required /></td></tr>"""
+<input type="text" name="birthday" id="birthday_id" required></td></tr>"""
)
self.assertHTMLEqual(
p.as_ul(),
"""<li><label for="first_name_id">First name:</label>
-<input type="text" name="first_name" id="first_name_id" required /></li>
+<input type="text" name="first_name" id="first_name_id" required></li>
<li><label for="last_name_id">Last name:</label>
-<input type="text" name="last_name" id="last_name_id" required /></li>
+<input type="text" name="last_name" id="last_name_id" required></li>
<li><label for="birthday_id">Birthday:</label>
-<input type="text" name="birthday" id="birthday_id" required /></li>"""
+<input type="text" name="birthday" id="birthday_id" required></li>"""
)
self.assertHTMLEqual(
p.as_p(),
"""<p><label for="first_name_id">First name:</label>
-<input type="text" name="first_name" id="first_name_id" required /></p>
+<input type="text" name="first_name" id="first_name_id" required></p>
<p><label for="last_name_id">Last name:</label>
-<input type="text" name="last_name" id="last_name_id" required /></p>
+<input type="text" name="last_name" id="last_name_id" required></p>
<p><label for="birthday_id">Birthday:</label>
-<input type="text" name="birthday" id="birthday_id" required /></p>"""
+<input type="text" name="birthday" id="birthday_id" required></p>"""
)
def test_auto_id_true(self):
@@ -372,11 +372,11 @@ class FormsTestCase(SimpleTestCase):
self.assertHTMLEqual(
p.as_ul(),
"""<li><label for="first_name">First name:</label>
-<input type="text" name="first_name" id="first_name" required /></li>
+<input type="text" name="first_name" id="first_name" required></li>
<li><label for="last_name">Last name:</label>
-<input type="text" name="last_name" id="last_name" required /></li>
+<input type="text" name="last_name" id="last_name" required></li>
<li><label for="birthday">Birthday:</label>
-<input type="text" name="birthday" id="birthday" required /></li>"""
+<input type="text" name="birthday" id="birthday" required></li>"""
)
def test_auto_id_false(self):
@@ -385,9 +385,9 @@ class FormsTestCase(SimpleTestCase):
p = Person(auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """<li>First name: <input type="text" name="first_name" required /></li>
-<li>Last name: <input type="text" name="last_name" required /></li>
-<li>Birthday: <input type="text" name="birthday" required /></li>"""
+ """<li>First name: <input type="text" name="first_name" required></li>
+<li>Last name: <input type="text" name="last_name" required></li>
+<li>Birthday: <input type="text" name="birthday" required></li>"""
)
def test_id_on_field(self):
@@ -397,9 +397,9 @@ class FormsTestCase(SimpleTestCase):
self.assertHTMLEqual(
p.as_ul(),
"""<li><label for="first_name_id">First name:</label>
-<input type="text" id="first_name_id" name="first_name" required /></li>
-<li>Last name: <input type="text" name="last_name" required /></li>
-<li>Birthday: <input type="text" name="birthday" required /></li>"""
+<input type="text" id="first_name_id" name="first_name" required></li>
+<li>Last name: <input type="text" name="last_name" required></li>
+<li>Birthday: <input type="text" name="birthday" required></li>"""
)
def test_auto_id_on_form_and_field(self):
@@ -409,11 +409,11 @@ class FormsTestCase(SimpleTestCase):
self.assertHTMLEqual(
p.as_ul(),
"""<li><label for="first_name_id">First name:</label>
-<input type="text" id="first_name_id" name="first_name" required /></li>
+<input type="text" id="first_name_id" name="first_name" required></li>
<li><label for="last_name">Last name:</label>
-<input type="text" name="last_name" id="last_name" required /></li>
+<input type="text" name="last_name" id="last_name" required></li>
<li><label for="birthday">Birthday:</label>
-<input type="text" name="birthday" id="birthday" required /></li>"""
+<input type="text" name="birthday" id="birthday" required></li>"""
)
def test_various_boolean_values(self):
@@ -422,33 +422,33 @@ class FormsTestCase(SimpleTestCase):
get_spam = BooleanField()
f = SignupForm(auto_id=False)
- self.assertHTMLEqual(str(f['email']), '<input type="email" name="email" required />')
- self.assertHTMLEqual(str(f['get_spam']), '<input type="checkbox" name="get_spam" required />')
+ self.assertHTMLEqual(str(f['email']), '<input type="email" name="email" required>')
+ self.assertHTMLEqual(str(f['get_spam']), '<input type="checkbox" name="get_spam" required>')
f = SignupForm({'email': 'test@example.com', 'get_spam': True}, auto_id=False)
- self.assertHTMLEqual(str(f['email']), '<input type="email" name="email" value="test@example.com" required />')
+ self.assertHTMLEqual(str(f['email']), '<input type="email" name="email" value="test@example.com" required>')
self.assertHTMLEqual(
str(f['get_spam']),
- '<input checked type="checkbox" name="get_spam" required />',
+ '<input checked type="checkbox" name="get_spam" required>',
)
# 'True' or 'true' should be rendered without a value attribute
f = SignupForm({'email': 'test@example.com', 'get_spam': 'True'}, auto_id=False)
self.assertHTMLEqual(
str(f['get_spam']),
- '<input checked type="checkbox" name="get_spam" required />',
+ '<input checked type="checkbox" name="get_spam" required>',
)
f = SignupForm({'email': 'test@example.com', 'get_spam': 'true'}, auto_id=False)
self.assertHTMLEqual(
- str(f['get_spam']), '<input checked type="checkbox" name="get_spam" required />')
+ str(f['get_spam']), '<input checked type="checkbox" name="get_spam" required>')
# A value of 'False' or 'false' should be rendered unchecked
f = SignupForm({'email': 'test@example.com', 'get_spam': 'False'}, auto_id=False)
- self.assertHTMLEqual(str(f['get_spam']), '<input type="checkbox" name="get_spam" required />')
+ self.assertHTMLEqual(str(f['get_spam']), '<input type="checkbox" name="get_spam" required>')
f = SignupForm({'email': 'test@example.com', 'get_spam': 'false'}, auto_id=False)
- self.assertHTMLEqual(str(f['get_spam']), '<input type="checkbox" name="get_spam" required />')
+ self.assertHTMLEqual(str(f['get_spam']), '<input type="checkbox" name="get_spam" required>')
# A value of '0' should be interpreted as a True value (#16820)
f = SignupForm({'email': 'test@example.com', 'get_spam': '0'})
@@ -462,7 +462,7 @@ class FormsTestCase(SimpleTestCase):
message = CharField(widget=Textarea)
f = ContactForm(auto_id=False)
- self.assertHTMLEqual(str(f['subject']), '<input type="text" name="subject" required />')
+ self.assertHTMLEqual(str(f['subject']), '<input type="text" name="subject" required>')
self.assertHTMLEqual(str(f['message']), '<textarea name="message" rows="10" cols="40" required></textarea>')
# as_textarea(), as_text() and as_hidden() are shortcuts for changing the output
@@ -471,8 +471,8 @@ class FormsTestCase(SimpleTestCase):
f['subject'].as_textarea(),
'<textarea name="subject" rows="10" cols="40" required></textarea>',
)
- self.assertHTMLEqual(f['message'].as_text(), '<input type="text" name="message" required />')
- self.assertHTMLEqual(f['message'].as_hidden(), '<input type="hidden" name="message" />')
+ self.assertHTMLEqual(f['message'].as_text(), '<input type="text" name="message" required>')
+ self.assertHTMLEqual(f['message'].as_hidden(), '<input type="hidden" name="message">')
# The 'widget' parameter to a Field can also be an instance:
class ContactForm(Form):
@@ -484,7 +484,7 @@ class FormsTestCase(SimpleTestCase):
# Instance-level attrs are *not* carried over to as_textarea(), as_text() and
# as_hidden():
- self.assertHTMLEqual(f['message'].as_text(), '<input type="text" name="message" required />')
+ self.assertHTMLEqual(f['message'].as_text(), '<input type="text" name="message" required>')
f = ContactForm({'subject': 'Hello', 'message': 'I love you.'}, auto_id=False)
self.assertHTMLEqual(
f['subject'].as_textarea(),
@@ -492,9 +492,9 @@ class FormsTestCase(SimpleTestCase):
)
self.assertHTMLEqual(
f['message'].as_text(),
- '<input type="text" name="message" value="I love you." required />',
+ '<input type="text" name="message" value="I love you." required>',
)
- self.assertHTMLEqual(f['message'].as_hidden(), '<input type="hidden" name="message" value="I love you." />')
+ self.assertHTMLEqual(f['message'].as_hidden(), '<input type="hidden" name="message" value="I love you.">')
def test_forms_with_choices(self):
# For a form with a <select>, use ChoiceField:
@@ -585,18 +585,18 @@ class FormsTestCase(SimpleTestCase):
f = FrameworkForm(auto_id=False)
self.assertHTMLEqual(str(f['language']), """<ul>
-<li><label><input type="radio" name="language" value="P" required /> Python</label></li>
-<li><label><input type="radio" name="language" value="J" required /> Java</label></li>
+<li><label><input type="radio" name="language" value="P" required> Python</label></li>
+<li><label><input type="radio" name="language" value="J" required> Java</label></li>
</ul>""")
- self.assertHTMLEqual(f.as_table(), """<tr><th>Name:</th><td><input type="text" name="name" required /></td></tr>
+ self.assertHTMLEqual(f.as_table(), """<tr><th>Name:</th><td><input type="text" name="name" required></td></tr>
<tr><th>Language:</th><td><ul>
-<li><label><input type="radio" name="language" value="P" required /> Python</label></li>
-<li><label><input type="radio" name="language" value="J" required /> Java</label></li>
+<li><label><input type="radio" name="language" value="P" required> Python</label></li>
+<li><label><input type="radio" name="language" value="J" required> Java</label></li>
</ul></td></tr>""")
- self.assertHTMLEqual(f.as_ul(), """<li>Name: <input type="text" name="name" required /></li>
+ self.assertHTMLEqual(f.as_ul(), """<li>Name: <input type="text" name="name" required></li>
<li>Language: <ul>
-<li><label><input type="radio" name="language" value="P" required /> Python</label></li>
-<li><label><input type="radio" name="language" value="J" required /> Java</label></li>
+<li><label><input type="radio" name="language" value="P" required> Python</label></li>
+<li><label><input type="radio" name="language" value="J" required> Java</label></li>
</ul></li>""")
# Regarding auto_id and <label>, RadioSelect is a special case. Each radio button
@@ -606,9 +606,9 @@ class FormsTestCase(SimpleTestCase):
self.assertHTMLEqual(
str(f['language']),
"""<ul id="id_language">
-<li><label for="id_language_0"><input type="radio" id="id_language_0" value="P" name="language" required />
+<li><label for="id_language_0"><input type="radio" id="id_language_0" value="P" name="language" required>
Python</label></li>
-<li><label for="id_language_1"><input type="radio" id="id_language_1" value="J" name="language" required />
+<li><label for="id_language_1"><input type="radio" id="id_language_1" value="J" name="language" required>
Java</label></li>
</ul>"""
)
@@ -618,31 +618,31 @@ Java</label></li>
# ID of the *first* radio button.
self.assertHTMLEqual(
f.as_table(),
- """<tr><th><label for="id_name">Name:</label></th><td><input type="text" name="name" id="id_name" required /></td></tr>
+ """<tr><th><label for="id_name">Name:</label></th><td><input type="text" name="name" id="id_name" required></td></tr>
<tr><th><label for="id_language_0">Language:</label></th><td><ul id="id_language">
-<li><label for="id_language_0"><input type="radio" id="id_language_0" value="P" name="language" required />
+<li><label for="id_language_0"><input type="radio" id="id_language_0" value="P" name="language" required>
Python</label></li>
-<li><label for="id_language_1"><input type="radio" id="id_language_1" value="J" name="language" required />
+<li><label for="id_language_1"><input type="radio" id="id_language_1" value="J" name="language" required>
Java</label></li>
</ul></td></tr>"""
)
self.assertHTMLEqual(
f.as_ul(),
- """<li><label for="id_name">Name:</label> <input type="text" name="name" id="id_name" required /></li>
+ """<li><label for="id_name">Name:</label> <input type="text" name="name" id="id_name" required></li>
<li><label for="id_language_0">Language:</label> <ul id="id_language">
-<li><label for="id_language_0"><input type="radio" id="id_language_0" value="P" name="language" required />
+<li><label for="id_language_0"><input type="radio" id="id_language_0" value="P" name="language" required>
Python</label></li>
-<li><label for="id_language_1"><input type="radio" id="id_language_1" value="J" name="language" required />
+<li><label for="id_language_1"><input type="radio" id="id_language_1" value="J" name="language" required>
Java</label></li>
</ul></li>"""
)
self.assertHTMLEqual(
f.as_p(),
- """<p><label for="id_name">Name:</label> <input type="text" name="name" id="id_name" required /></p>
+ """<p><label for="id_name">Name:</label> <input type="text" name="name" id="id_name" required></p>
<p><label for="id_language_0">Language:</label> <ul id="id_language">
-<li><label for="id_language_0"><input type="radio" id="id_language_0" value="P" name="language" required />
+<li><label for="id_language_0"><input type="radio" id="id_language_0" value="P" name="language" required>
Python</label></li>
-<li><label for="id_language_1"><input type="radio" id="id_language_1" value="J" name="language" required />
+<li><label for="id_language_1"><input type="radio" id="id_language_1" value="J" name="language" required>
Java</label></li>
</ul></p>"""
)
@@ -652,9 +652,9 @@ Java</label></li>
self.assertHTMLEqual(
t.render(Context({'form': f})),
"""<div class="myradio"><label for="id_language_0">
-<input id="id_language_0" name="language" type="radio" value="P" required /> Python</label></div>
+<input id="id_language_0" name="language" type="radio" value="P" required> Python</label></div>
<div class="myradio"><label for="id_language_1">
-<input id="id_language_1" name="language" type="radio" value="J" required /> Java</label></div>"""
+<input id="id_language_1" name="language" type="radio" value="J" required> Java</label></div>"""
)
def test_form_with_iterable_boundfield(self):
@@ -667,17 +667,17 @@ Java</label></li>
f = BeatleForm(auto_id=False)
self.assertHTMLEqual(
'\n'.join(str(bf) for bf in f['name']),
- """<label><input type="radio" name="name" value="john" required /> John</label>
-<label><input type="radio" name="name" value="paul" required /> Paul</label>
-<label><input type="radio" name="name" value="george" required /> George</label>
-<label><input type="radio" name="name" value="ringo" required /> Ringo</label>"""
+ """<label><input type="radio" name="name" value="john" required> John</label>
+<label><input type="radio" name="name" value="paul" required> Paul</label>
+<label><input type="radio" name="name" value="george" required> George</label>
+<label><input type="radio" name="name" value="ringo" required> Ringo</label>"""
)
self.assertHTMLEqual(
'\n'.join('<div>%s</div>' % bf for bf in f['name']),
- """<div><label><input type="radio" name="name" value="john" required /> John</label></div>
-<div><label><input type="radio" name="name" value="paul" required /> Paul</label></div>
-<div><label><input type="radio" name="name" value="george" required /> George</label></div>
-<div><label><input type="radio" name="name" value="ringo" required /> Ringo</label></div>"""
+ """<div><label><input type="radio" name="name" value="john" required> John</label></div>
+<div><label><input type="radio" name="name" value="paul" required> Paul</label></div>
+<div><label><input type="radio" name="name" value="george" required> George</label></div>
+<div><label><input type="radio" name="name" value="ringo" required> Ringo</label></div>"""
)
def test_form_with_iterable_boundfield_id(self):
@@ -693,24 +693,24 @@ Java</label></li>
self.assertEqual(fields[0].choice_label, 'John')
self.assertHTMLEqual(
fields[0].tag(),
- '<input type="radio" name="name" value="john" id="id_name_0" required />'
+ '<input type="radio" name="name" value="john" id="id_name_0" required>'
)
self.assertHTMLEqual(
str(fields[0]),
'<label for="id_name_0"><input type="radio" name="name" '
- 'value="john" id="id_name_0" required /> John</label>'
+ 'value="john" id="id_name_0" required> John</label>'
)
self.assertEqual(fields[1].id_for_label, 'id_name_1')
self.assertEqual(fields[1].choice_label, 'Paul')
self.assertHTMLEqual(
fields[1].tag(),
- '<input type="radio" name="name" value="paul" id="id_name_1" required />'
+ '<input type="radio" name="name" value="paul" id="id_name_1" required>'
)
self.assertHTMLEqual(
str(fields[1]),
'<label for="id_name_1"><input type="radio" name="name" '
- 'value="paul" id="id_name_1" required /> Paul</label>'
+ 'value="paul" id="id_name_1" required> Paul</label>'
)
def test_iterable_boundfield_select(self):
@@ -730,7 +730,7 @@ Java</label></li>
name = CharField()
f = BeatleForm(auto_id=False)
- self.assertHTMLEqual('\n'.join(str(bf) for bf in f['name']), '<input type="text" name="name" required />')
+ self.assertHTMLEqual('\n'.join(str(bf) for bf in f['name']), '<input type="text" name="name" required>')
def test_boundfield_slice(self):
class BeatleForm(Form):
@@ -773,7 +773,7 @@ Java</label></li>
<option value="P">Paul McCartney</option>
</select>""")
f = SongForm({'name': 'Yesterday', 'composers': ['P']}, auto_id=False)
- self.assertHTMLEqual(str(f['name']), '<input type="text" name="name" value="Yesterday" required />')
+ self.assertHTMLEqual(str(f['name']), '<input type="text" name="name" value="Yesterday" required>')
self.assertHTMLEqual(str(f['composers']), """<select multiple name="composers" required>
<option value="J">John Lennon</option>
<option value="P" selected>Paul McCartney</option>
@@ -827,10 +827,10 @@ Java</label></li>
# have multiple values, its as_hidden() renders multiple <input type="hidden">
# tags.
f = SongForm({'name': 'Yesterday', 'composers': ['P']}, auto_id=False)
- self.assertHTMLEqual(f['composers'].as_hidden(), '<input type="hidden" name="composers" value="P" />')
+ self.assertHTMLEqual(f['composers'].as_hidden(), '<input type="hidden" name="composers" value="P">')
f = SongForm({'name': 'From Me To You', 'composers': ['P', 'J']}, auto_id=False)
- self.assertHTMLEqual(f['composers'].as_hidden(), """<input type="hidden" name="composers" value="P" />
-<input type="hidden" name="composers" value="J" />""")
+ self.assertHTMLEqual(f['composers'].as_hidden(), """<input type="hidden" name="composers" value="P">
+<input type="hidden" name="composers" value="J">""")
# DateTimeField rendered as_hidden() is special too
class MessageForm(Form):
@@ -840,13 +840,13 @@ Java</label></li>
self.assertTrue(f.is_valid())
self.assertHTMLEqual(
str(f['when']),
- '<input type="text" name="when_0" value="1992-01-01" id="id_when_0" required />'
- '<input type="text" name="when_1" value="01:01" id="id_when_1" required />'
+ '<input type="text" name="when_0" value="1992-01-01" id="id_when_0" required>'
+ '<input type="text" name="when_1" value="01:01" id="id_when_1" required>'
)
self.assertHTMLEqual(
f['when'].as_hidden(),
- '<input type="hidden" name="when_0" value="1992-01-01" id="id_when_0" />'
- '<input type="hidden" name="when_1" value="01:01" id="id_when_1" />'
+ '<input type="hidden" name="when_0" value="1992-01-01" id="id_when_0">'
+ '<input type="hidden" name="when_1" value="01:01" id="id_when_1">'
)
def test_multiple_choice_checkbox(self):
@@ -860,25 +860,25 @@ Java</label></li>
f = SongForm(auto_id=False)
self.assertHTMLEqual(str(f['composers']), """<ul>
-<li><label><input type="checkbox" name="composers" value="J" /> John Lennon</label></li>
-<li><label><input type="checkbox" name="composers" value="P" /> Paul McCartney</label></li>
+<li><label><input type="checkbox" name="composers" value="J"> John Lennon</label></li>
+<li><label><input type="checkbox" name="composers" value="P"> Paul McCartney</label></li>
</ul>""")
f = SongForm({'composers': ['J']}, auto_id=False)
self.assertHTMLEqual(str(f['composers']), """<ul>
-<li><label><input checked type="checkbox" name="composers" value="J" /> John Lennon</label></li>
-<li><label><input type="checkbox" name="composers" value="P" /> Paul McCartney</label></li>
+<li><label><input checked type="checkbox" name="composers" value="J"> John Lennon</label></li>
+<li><label><input type="checkbox" name="composers" value="P"> Paul McCartney</label></li>
</ul>""")
f = SongForm({'composers': ['J', 'P']}, auto_id=False)
self.assertHTMLEqual(str(f['composers']), """<ul>
-<li><label><input checked type="checkbox" name="composers" value="J" /> John Lennon</label></li>
-<li><label><input checked type="checkbox" name="composers" value="P" /> Paul McCartney</label></li>
+<li><label><input checked type="checkbox" name="composers" value="J"> John Lennon</label></li>
+<li><label><input checked type="checkbox" name="composers" value="P"> Paul McCartney</label></li>
</ul>""")
# Test iterating on individual checkboxes in a template
t = Template('{% for checkbox in form.composers %}<div class="mycheckbox">{{ checkbox }}</div>{% endfor %}')
self.assertHTMLEqual(t.render(Context({'form': f})), """<div class="mycheckbox"><label>
-<input checked name="composers" type="checkbox" value="J" /> John Lennon</label></div>
+<input checked name="composers" type="checkbox" value="J"> John Lennon</label></div>
<div class="mycheckbox"><label>
-<input checked name="composers" type="checkbox" value="P" /> Paul McCartney</label></div>""")
+<input checked name="composers" type="checkbox" value="P"> Paul McCartney</label></div>""")
def test_checkbox_auto_id(self):
# Regarding auto_id, CheckboxSelectMultiple is a special case. Each checkbox
@@ -896,9 +896,9 @@ Java</label></li>
str(f['composers']),
"""<ul id="composers_id">
<li><label for="composers_id_0">
-<input type="checkbox" name="composers" value="J" id="composers_id_0" /> John Lennon</label></li>
+<input type="checkbox" name="composers" value="J" id="composers_id_0"> John Lennon</label></li>
<li><label for="composers_id_1">
-<input type="checkbox" name="composers" value="P" id="composers_id_1" /> Paul McCartney</label></li>
+<input type="checkbox" name="composers" value="P" id="composers_id_1"> Paul McCartney</label></li>
</ul>"""
)
@@ -949,9 +949,9 @@ Java</label></li>
f = SongFormHidden(MultiValueDict({'name': ['Yesterday'], 'composers': ['J', 'P']}), auto_id=False)
self.assertHTMLEqual(
f.as_ul(),
- """<li>Name: <input type="text" name="name" value="Yesterday" required />
-<input type="hidden" name="composers" value="J" />
-<input type="hidden" name="composers" value="P" /></li>"""
+ """<li>Name: <input type="text" name="name" value="Yesterday" required>
+<input type="hidden" name="composers" value="J">
+<input type="hidden" name="composers" value="P"></li>"""
)
# When using CheckboxSelectMultiple, the framework expects a list of input and
@@ -996,10 +996,10 @@ Java</label></li>
f.as_table(),
"""<tr><th>&lt;em&gt;Special&lt;/em&gt; Field:</th><td>
<ul class="errorlist"><li>Something&#39;s wrong with &#39;Nothing to escape&#39;</li></ul>
-<input type="text" name="special_name" value="Nothing to escape" required /></td></tr>
+<input type="text" name="special_name" value="Nothing to escape" required></td></tr>
<tr><th><em>Special</em> Field:</th><td>
<ul class="errorlist"><li>'<b>Nothing to escape</b>' is a safe string</li></ul>
-<input type="text" name="special_safe_name" value="Nothing to escape" required /></td></tr>"""
+<input type="text" name="special_safe_name" value="Nothing to escape" required></td></tr>"""
)
f = EscapingForm({
'special_name': "Should escape < & > and <script>alert('xss')</script>",
@@ -1011,10 +1011,10 @@ Java</label></li>
<ul class="errorlist"><li>Something&#39;s wrong with &#39;Should escape &lt; &amp; &gt; and
&lt;script&gt;alert(&#39;xss&#39;)&lt;/script&gt;&#39;</li></ul>
<input type="text" name="special_name"
-value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#39;xss&#39;)&lt;/script&gt;" required /></td></tr>
+value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#39;xss&#39;)&lt;/script&gt;" required></td></tr>
<tr><th><em>Special</em> Field:</th><td>
<ul class="errorlist"><li>'<b><i>Do not escape</i></b>' is a safe string</li></ul>
-<input type="text" name="special_safe_name" value="&lt;i&gt;Do not escape&lt;/i&gt;" required /></td></tr>"""
+<input type="text" name="special_safe_name" value="&lt;i&gt;Do not escape&lt;/i&gt;" required></td></tr>"""
)
def test_validating_multiple_fields(self):
@@ -1101,11 +1101,11 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#39;xss&#39;)&lt;/
f.as_table(),
"""<tr><th>Username:</th><td>
<ul class="errorlist"><li>This field is required.</li></ul>
-<input type="text" name="username" maxlength="10" required /></td></tr>
+<input type="text" name="username" maxlength="10" required></td></tr>
<tr><th>Password1:</th><td><ul class="errorlist"><li>This field is required.</li></ul>
-<input type="password" name="password1" required /></td></tr>
+<input type="password" name="password1" required></td></tr>
<tr><th>Password2:</th><td><ul class="errorlist"><li>This field is required.</li></ul>
-<input type="password" name="password2" required /></td></tr>"""
+<input type="password" name="password2" required></td></tr>"""
)
self.assertEqual(f.errors['username'], ['This field is required.'])
self.assertEqual(f.errors['password1'], ['This field is required.'])
@@ -1117,17 +1117,17 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#39;xss&#39;)&lt;/
f.as_table(),
"""<tr><td colspan="2">
<ul class="errorlist nonfield"><li>Please make sure your passwords match.</li></ul></td></tr>
-<tr><th>Username:</th><td><input type="text" name="username" value="adrian" maxlength="10" required /></td></tr>
-<tr><th>Password1:</th><td><input type="password" name="password1" required /></td></tr>
-<tr><th>Password2:</th><td><input type="password" name="password2" required /></td></tr>"""
+<tr><th>Username:</th><td><input type="text" name="username" value="adrian" maxlength="10" required></td></tr>
+<tr><th>Password1:</th><td><input type="password" name="password1" required></td></tr>
+<tr><th>Password2:</th><td><input type="password" name="password2" required></td></tr>"""
)
self.assertHTMLEqual(
f.as_ul(),
"""<li><ul class="errorlist nonfield">
<li>Please make sure your passwords match.</li></ul></li>
-<li>Username: <input type="text" name="username" value="adrian" maxlength="10" required /></li>
-<li>Password1: <input type="password" name="password1" required /></li>
-<li>Password2: <input type="password" name="password2" required /></li>"""
+<li>Username: <input type="text" name="username" value="adrian" maxlength="10" required></li>
+<li>Password1: <input type="password" name="password1" required></li>
+<li>Password2: <input type="password" name="password2" required></li>"""
)
f = UserRegistration({'username': 'adrian', 'password1': 'foo', 'password2': 'foo'}, auto_id=False)
@@ -1251,9 +1251,9 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#39;xss&#39;)&lt;/
p = Person(auto_id=False)
self.assertHTMLEqual(
p.as_table(),
- """<tr><th>First name:</th><td><input type="text" name="first_name" required /></td></tr>
-<tr><th>Last name:</th><td><input type="text" name="last_name" required /></td></tr>
-<tr><th>Birthday:</th><td><input type="text" name="birthday" required /></td></tr>"""
+ """<tr><th>First name:</th><td><input type="text" name="first_name" required></td></tr>
+<tr><th>Last name:</th><td><input type="text" name="last_name" required></td></tr>
+<tr><th>Birthday:</th><td><input type="text" name="birthday" required></td></tr>"""
)
# Instances of a dynamic Form do not persist fields from one Form instance to
@@ -1269,15 +1269,15 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#39;xss&#39;)&lt;/
my_form = MyForm(field_list=field_list)
self.assertHTMLEqual(
my_form.as_table(),
- """<tr><th>Field1:</th><td><input type="text" name="field1" required /></td></tr>
-<tr><th>Field2:</th><td><input type="text" name="field2" required /></td></tr>"""
+ """<tr><th>Field1:</th><td><input type="text" name="field1" required></td></tr>
+<tr><th>Field2:</th><td><input type="text" name="field2" required></td></tr>"""
)
field_list = [('field3', CharField()), ('field4', CharField())]
my_form = MyForm(field_list=field_list)
self.assertHTMLEqual(
my_form.as_table(),
- """<tr><th>Field3:</th><td><input type="text" name="field3" required /></td></tr>
-<tr><th>Field4:</th><td><input type="text" name="field4" required /></td></tr>"""
+ """<tr><th>Field3:</th><td><input type="text" name="field3" required></td></tr>
+<tr><th>Field4:</th><td><input type="text" name="field4" required></td></tr>"""
)
class MyForm(Form):
@@ -1294,19 +1294,19 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#39;xss&#39;)&lt;/
my_form = MyForm(field_list=field_list)
self.assertHTMLEqual(
my_form.as_table(),
- """<tr><th>Default field 1:</th><td><input type="text" name="default_field_1" required /></td></tr>
-<tr><th>Default field 2:</th><td><input type="text" name="default_field_2" required /></td></tr>
-<tr><th>Field1:</th><td><input type="text" name="field1" required /></td></tr>
-<tr><th>Field2:</th><td><input type="text" name="field2" required /></td></tr>"""
+ """<tr><th>Default field 1:</th><td><input type="text" name="default_field_1" required></td></tr>
+<tr><th>Default field 2:</th><td><input type="text" name="default_field_2" required></td></tr>
+<tr><th>Field1:</th><td><input type="text" name="field1" required></td></tr>
+<tr><th>Field2:</th><td><input type="text" name="field2" required></td></tr>"""
)
field_list = [('field3', CharField()), ('field4', CharField())]
my_form = MyForm(field_list=field_list)
self.assertHTMLEqual(
my_form.as_table(),
- """<tr><th>Default field 1:</th><td><input type="text" name="default_field_1" required /></td></tr>
-<tr><th>Default field 2:</th><td><input type="text" name="default_field_2" required /></td></tr>
-<tr><th>Field3:</th><td><input type="text" name="field3" required /></td></tr>
-<tr><th>Field4:</th><td><input type="text" name="field4" required /></td></tr>"""
+ """<tr><th>Default field 1:</th><td><input type="text" name="default_field_1" required></td></tr>
+<tr><th>Default field 2:</th><td><input type="text" name="default_field_2" required></td></tr>
+<tr><th>Field3:</th><td><input type="text" name="field3" required></td></tr>
+<tr><th>Field4:</th><td><input type="text" name="field4" required></td></tr>"""
)
# Similarly, changes to field attributes do not persist from one Form instance
@@ -1404,21 +1404,21 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#39;xss&#39;)&lt;/
p = Person(auto_id=False)
self.assertHTMLEqual(
p.as_table(),
- """<tr><th>First name:</th><td><input type="text" name="first_name" required /></td></tr>
-<tr><th>Last name:</th><td><input type="text" name="last_name" required /></td></tr>
+ """<tr><th>First name:</th><td><input type="text" name="first_name" required></td></tr>
+<tr><th>Last name:</th><td><input type="text" name="last_name" required></td></tr>
<tr><th>Birthday:</th>
-<td><input type="text" name="birthday" required /><input type="hidden" name="hidden_text" /></td></tr>"""
+<td><input type="text" name="birthday" required><input type="hidden" name="hidden_text"></td></tr>"""
)
self.assertHTMLEqual(
p.as_ul(),
- """<li>First name: <input type="text" name="first_name" required /></li>
-<li>Last name: <input type="text" name="last_name" required /></li>
-<li>Birthday: <input type="text" name="birthday" required /><input type="hidden" name="hidden_text" /></li>"""
+ """<li>First name: <input type="text" name="first_name" required></li>
+<li>Last name: <input type="text" name="last_name" required></li>
+<li>Birthday: <input type="text" name="birthday" required><input type="hidden" name="hidden_text"></li>"""
)
self.assertHTMLEqual(
- p.as_p(), """<p>First name: <input type="text" name="first_name" required /></p>
-<p>Last name: <input type="text" name="last_name" required /></p>
-<p>Birthday: <input type="text" name="birthday" required /><input type="hidden" name="hidden_text" /></p>"""
+ p.as_p(), """<p>First name: <input type="text" name="first_name" required></p>
+<p>Last name: <input type="text" name="last_name" required></p>
+<p>Birthday: <input type="text" name="birthday" required><input type="hidden" name="hidden_text"></p>"""
)
# With auto_id set, a HiddenInput still gets an ID, but it doesn't get a label.
@@ -1426,32 +1426,32 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#39;xss&#39;)&lt;/
self.assertHTMLEqual(
p.as_table(),
"""<tr><th><label for="id_first_name">First name:</label></th><td>
-<input type="text" name="first_name" id="id_first_name" required /></td></tr>
+<input type="text" name="first_name" id="id_first_name" required></td></tr>
<tr><th><label for="id_last_name">Last name:</label></th><td>
-<input type="text" name="last_name" id="id_last_name" required /></td></tr>
+<input type="text" name="last_name" id="id_last_name" required></td></tr>
<tr><th><label for="id_birthday">Birthday:</label></th><td>
-<input type="text" name="birthday" id="id_birthday" required />
-<input type="hidden" name="hidden_text" id="id_hidden_text" /></td></tr>"""
+<input type="text" name="birthday" id="id_birthday" required>
+<input type="hidden" name="hidden_text" id="id_hidden_text"></td></tr>"""
)
self.assertHTMLEqual(
p.as_ul(),
"""<li><label for="id_first_name">First name:</label>
-<input type="text" name="first_name" id="id_first_name" required /></li>
+<input type="text" name="first_name" id="id_first_name" required></li>
<li><label for="id_last_name">Last name:</label>
-<input type="text" name="last_name" id="id_last_name" required /></li>
+<input type="text" name="last_name" id="id_last_name" required></li>
<li><label for="id_birthday">Birthday:</label>
-<input type="text" name="birthday" id="id_birthday" required />
-<input type="hidden" name="hidden_text" id="id_hidden_text" /></li>"""
+<input type="text" name="birthday" id="id_birthday" required>
+<input type="hidden" name="hidden_text" id="id_hidden_text"></li>"""
)
self.assertHTMLEqual(
p.as_p(),
"""<p><label for="id_first_name">First name:</label>
-<input type="text" name="first_name" id="id_first_name" required /></p>
+<input type="text" name="first_name" id="id_first_name" required></p>
<p><label for="id_last_name">Last name:</label>
-<input type="text" name="last_name" id="id_last_name" required /></p>
+<input type="text" name="last_name" id="id_last_name" required></p>
<p><label for="id_birthday">Birthday:</label>
-<input type="text" name="birthday" id="id_birthday" required />
-<input type="hidden" name="hidden_text" id="id_hidden_text" /></p>"""
+<input type="text" name="birthday" id="id_birthday" required>
+<input type="hidden" name="hidden_text" id="id_hidden_text"></p>"""
)
# If a field with a HiddenInput has errors, the as_table() and as_ul() output
@@ -1463,26 +1463,26 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#39;xss&#39;)&lt;/
p.as_table(),
"""<tr><td colspan="2">
<ul class="errorlist nonfield"><li>(Hidden field hidden_text) This field is required.</li></ul></td></tr>
-<tr><th>First name:</th><td><input type="text" name="first_name" value="John" required /></td></tr>
-<tr><th>Last name:</th><td><input type="text" name="last_name" value="Lennon" required /></td></tr>
-<tr><th>Birthday:</th><td><input type="text" name="birthday" value="1940-10-9" required />
-<input type="hidden" name="hidden_text" /></td></tr>"""
+<tr><th>First name:</th><td><input type="text" name="first_name" value="John" required></td></tr>
+<tr><th>Last name:</th><td><input type="text" name="last_name" value="Lennon" required></td></tr>
+<tr><th>Birthday:</th><td><input type="text" name="birthday" value="1940-10-9" required>
+<input type="hidden" name="hidden_text"></td></tr>"""
)
self.assertHTMLEqual(
p.as_ul(),
"""<li><ul class="errorlist nonfield"><li>(Hidden field hidden_text) This field is required.</li></ul></li>
-<li>First name: <input type="text" name="first_name" value="John" required /></li>
-<li>Last name: <input type="text" name="last_name" value="Lennon" required /></li>
-<li>Birthday: <input type="text" name="birthday" value="1940-10-9" required />
-<input type="hidden" name="hidden_text" /></li>"""
+<li>First name: <input type="text" name="first_name" value="John" required></li>
+<li>Last name: <input type="text" name="last_name" value="Lennon" required></li>
+<li>Birthday: <input type="text" name="birthday" value="1940-10-9" required>
+<input type="hidden" name="hidden_text"></li>"""
)
self.assertHTMLEqual(
p.as_p(),
"""<ul class="errorlist nonfield"><li>(Hidden field hidden_text) This field is required.</li></ul>
-<p>First name: <input type="text" name="first_name" value="John" required /></p>
-<p>Last name: <input type="text" name="last_name" value="Lennon" required /></p>
-<p>Birthday: <input type="text" name="birthday" value="1940-10-9" required />
-<input type="hidden" name="hidden_text" /></p>"""
+<p>First name: <input type="text" name="first_name" value="John" required></p>
+<p>Last name: <input type="text" name="last_name" value="Lennon" required></p>
+<p>Birthday: <input type="text" name="birthday" value="1940-10-9" required>
+<input type="hidden" name="hidden_text"></p>"""
)
# A corner case: It's possible for a form to have only HiddenInputs.
@@ -1491,9 +1491,9 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#39;xss&#39;)&lt;/
bar = CharField(widget=HiddenInput)
p = TestForm(auto_id=False)
- self.assertHTMLEqual(p.as_table(), '<input type="hidden" name="foo" /><input type="hidden" name="bar" />')
- self.assertHTMLEqual(p.as_ul(), '<input type="hidden" name="foo" /><input type="hidden" name="bar" />')
- self.assertHTMLEqual(p.as_p(), '<input type="hidden" name="foo" /><input type="hidden" name="bar" />')
+ self.assertHTMLEqual(p.as_table(), '<input type="hidden" name="foo"><input type="hidden" name="bar">')
+ self.assertHTMLEqual(p.as_ul(), '<input type="hidden" name="foo"><input type="hidden" name="bar">')
+ self.assertHTMLEqual(p.as_p(), '<input type="hidden" name="foo"><input type="hidden" name="bar">')
def test_field_order(self):
# A Form's fields are displayed in the same order in which they were defined.
@@ -1514,20 +1514,20 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#39;xss&#39;)&lt;/
field14 = CharField()
p = TestForm(auto_id=False)
- self.assertHTMLEqual(p.as_table(), """<tr><th>Field1:</th><td><input type="text" name="field1" required /></td></tr>
-<tr><th>Field2:</th><td><input type="text" name="field2" required /></td></tr>
-<tr><th>Field3:</th><td><input type="text" name="field3" required /></td></tr>
-<tr><th>Field4:</th><td><input type="text" name="field4" required /></td></tr>
-<tr><th>Field5:</th><td><input type="text" name="field5" required /></td></tr>
-<tr><th>Field6:</th><td><input type="text" name="field6" required /></td></tr>
-<tr><th>Field7:</th><td><input type="text" name="field7" required /></td></tr>
-<tr><th>Field8:</th><td><input type="text" name="field8" required /></td></tr>
-<tr><th>Field9:</th><td><input type="text" name="field9" required /></td></tr>
-<tr><th>Field10:</th><td><input type="text" name="field10" required /></td></tr>
-<tr><th>Field11:</th><td><input type="text" name="field11" required /></td></tr>
-<tr><th>Field12:</th><td><input type="text" name="field12" required /></td></tr>
-<tr><th>Field13:</th><td><input type="text" name="field13" required /></td></tr>
-<tr><th>Field14:</th><td><input type="text" name="field14" required /></td></tr>""")
+ self.assertHTMLEqual(p.as_table(), """<tr><th>Field1:</th><td><input type="text" name="field1" required></td></tr>
+<tr><th>Field2:</th><td><input type="text" name="field2" required></td></tr>
+<tr><th>Field3:</th><td><input type="text" name="field3" required></td></tr>
+<tr><th>Field4:</th><td><input type="text" name="field4" required></td></tr>
+<tr><th>Field5:</th><td><input type="text" name="field5" required></td></tr>
+<tr><th>Field6:</th><td><input type="text" name="field6" required></td></tr>
+<tr><th>Field7:</th><td><input type="text" name="field7" required></td></tr>
+<tr><th>Field8:</th><td><input type="text" name="field8" required></td></tr>
+<tr><th>Field9:</th><td><input type="text" name="field9" required></td></tr>
+<tr><th>Field10:</th><td><input type="text" name="field10" required></td></tr>
+<tr><th>Field11:</th><td><input type="text" name="field11" required></td></tr>
+<tr><th>Field12:</th><td><input type="text" name="field12" required></td></tr>
+<tr><th>Field13:</th><td><input type="text" name="field13" required></td></tr>
+<tr><th>Field14:</th><td><input type="text" name="field14" required></td></tr>""")
def test_explicit_field_order(self):
class TestFormParent(Form):
@@ -1586,10 +1586,10 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#39;xss&#39;)&lt;/
p = UserRegistration(auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" maxlength="10" required /></li>
-<li>Password: <input type="password" name="password" maxlength="10" required /></li>
-<li>Realname: <input type="text" name="realname" maxlength="10" required /></li>
-<li>Address: <input type="text" name="address" required /></li>"""
+ """<li>Username: <input type="text" name="username" maxlength="10" required></li>
+<li>Password: <input type="password" name="password" maxlength="10" required></li>
+<li>Realname: <input type="text" name="realname" maxlength="10" required></li>
+<li>Address: <input type="text" name="address" required></li>"""
)
# If you specify a custom "attrs" that includes the "maxlength" attribute,
@@ -1602,8 +1602,8 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#39;xss&#39;)&lt;/
p = UserRegistration(auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" maxlength="10" required /></li>
-<li>Password: <input type="password" name="password" maxlength="10" required /></li>"""
+ """<li>Username: <input type="text" name="username" maxlength="10" required></li>
+<li>Password: <input type="password" name="password" maxlength="10" required></li>"""
)
def test_specifying_labels(self):
@@ -1618,9 +1618,9 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#39;xss&#39;)&lt;/
p = UserRegistration(auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Your username: <input type="text" name="username" maxlength="10" required /></li>
-<li>Password1: <input type="password" name="password1" required /></li>
-<li>Contraseña (de nuevo): <input type="password" name="password2" required /></li>"""
+ """<li>Your username: <input type="text" name="username" maxlength="10" required></li>
+<li>Password1: <input type="password" name="password1" required></li>
+<li>Contraseña (de nuevo): <input type="password" name="password2" required></li>"""
)
# Labels for as_* methods will only end in a colon if they don't end in other
@@ -1634,19 +1634,19 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#39;xss&#39;)&lt;/
self.assertHTMLEqual(
Questions(auto_id=False).as_p(),
- """<p>The first question: <input type="text" name="q1" required /></p>
-<p>What is your name? <input type="text" name="q2" required /></p>
-<p>The answer to life is: <input type="text" name="q3" required /></p>
-<p>Answer this question! <input type="text" name="q4" required /></p>
-<p>The last question. Period. <input type="text" name="q5" required /></p>"""
+ """<p>The first question: <input type="text" name="q1" required></p>
+<p>What is your name? <input type="text" name="q2" required></p>
+<p>The answer to life is: <input type="text" name="q3" required></p>
+<p>Answer this question! <input type="text" name="q4" required></p>
+<p>The last question. Period. <input type="text" name="q5" required></p>"""
)
self.assertHTMLEqual(
Questions().as_p(),
- """<p><label for="id_q1">The first question:</label> <input type="text" name="q1" id="id_q1" required /></p>
-<p><label for="id_q2">What is your name?</label> <input type="text" name="q2" id="id_q2" required /></p>
-<p><label for="id_q3">The answer to life is:</label> <input type="text" name="q3" id="id_q3" required /></p>
-<p><label for="id_q4">Answer this question!</label> <input type="text" name="q4" id="id_q4" required /></p>
-<p><label for="id_q5">The last question. Period.</label> <input type="text" name="q5" id="id_q5" required /></p>"""
+ """<p><label for="id_q1">The first question:</label> <input type="text" name="q1" id="id_q1" required></p>
+<p><label for="id_q2">What is your name?</label> <input type="text" name="q2" id="id_q2" required></p>
+<p><label for="id_q3">The answer to life is:</label> <input type="text" name="q3" id="id_q3" required></p>
+<p><label for="id_q4">Answer this question!</label> <input type="text" name="q4" id="id_q4" required></p>
+<p><label for="id_q5">The last question. Period.</label> <input type="text" name="q5" id="id_q5" required></p>"""
)
# If a label is set to the empty string for a field, that field won't get a label.
@@ -1655,14 +1655,14 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#39;xss&#39;)&lt;/
password = CharField(widget=PasswordInput)
p = UserRegistration(auto_id=False)
- self.assertHTMLEqual(p.as_ul(), """<li> <input type="text" name="username" maxlength="10" required /></li>
-<li>Password: <input type="password" name="password" required /></li>""")
+ self.assertHTMLEqual(p.as_ul(), """<li> <input type="text" name="username" maxlength="10" required></li>
+<li>Password: <input type="password" name="password" required></li>""")
p = UserRegistration(auto_id='id_%s')
self.assertHTMLEqual(
p.as_ul(),
- """<li> <input id="id_username" type="text" name="username" maxlength="10" required /></li>
+ """<li> <input id="id_username" type="text" name="username" maxlength="10" required></li>
<li><label for="id_password">Password:</label>
-<input type="password" name="password" id="id_password" required /></li>"""
+<input type="password" name="password" id="id_password" required></li>"""
)
# If label is None, Django will auto-create the label from the field name. This
@@ -1674,16 +1674,16 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#39;xss&#39;)&lt;/
p = UserRegistration(auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" maxlength="10" required /></li>
-<li>Password: <input type="password" name="password" required /></li>"""
+ """<li>Username: <input type="text" name="username" maxlength="10" required></li>
+<li>Password: <input type="password" name="password" required></li>"""
)
p = UserRegistration(auto_id='id_%s')
self.assertHTMLEqual(
p.as_ul(),
"""<li><label for="id_username">Username:</label>
-<input id="id_username" type="text" name="username" maxlength="10" required /></li>
+<input id="id_username" type="text" name="username" maxlength="10" required></li>
<li><label for="id_password">Password:</label>
-<input type="password" name="password" id="id_password" required /></li>"""
+<input type="password" name="password" id="id_password" required></li>"""
)
def test_label_suffix(self):
@@ -1698,26 +1698,26 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#39;xss&#39;)&lt;/
answer = CharField(label='Secret answer', label_suffix=' =')
f = FavoriteForm(auto_id=False)
- self.assertHTMLEqual(f.as_ul(), """<li>Favorite color? <input type="text" name="color" required /></li>
-<li>Favorite animal: <input type="text" name="animal" required /></li>
-<li>Secret answer = <input type="text" name="answer" required /></li>""")
+ self.assertHTMLEqual(f.as_ul(), """<li>Favorite color? <input type="text" name="color" required></li>
+<li>Favorite animal: <input type="text" name="animal" required></li>
+<li>Secret answer = <input type="text" name="answer" required></li>""")
f = FavoriteForm(auto_id=False, label_suffix='?')
- self.assertHTMLEqual(f.as_ul(), """<li>Favorite color? <input type="text" name="color" required /></li>
-<li>Favorite animal? <input type="text" name="animal" required /></li>
-<li>Secret answer = <input type="text" name="answer" required /></li>""")
+ self.assertHTMLEqual(f.as_ul(), """<li>Favorite color? <input type="text" name="color" required></li>
+<li>Favorite animal? <input type="text" name="animal" required></li>
+<li>Secret answer = <input type="text" name="answer" required></li>""")
f = FavoriteForm(auto_id=False, label_suffix='')
- self.assertHTMLEqual(f.as_ul(), """<li>Favorite color? <input type="text" name="color" required /></li>
-<li>Favorite animal <input type="text" name="animal" required /></li>
-<li>Secret answer = <input type="text" name="answer" required /></li>""")
+ self.assertHTMLEqual(f.as_ul(), """<li>Favorite color? <input type="text" name="color" required></li>
+<li>Favorite animal <input type="text" name="animal" required></li>
+<li>Secret answer = <input type="text" name="answer" required></li>""")
f = FavoriteForm(auto_id=False, label_suffix='\u2192')
self.assertHTMLEqual(
f.as_ul(),
- '<li>Favorite color? <input type="text" name="color" required /></li>\n'
- '<li>Favorite animal\u2192 <input type="text" name="animal" required /></li>\n'
- '<li>Secret answer = <input type="text" name="answer" required /></li>'
+ '<li>Favorite color? <input type="text" name="color" required></li>\n'
+ '<li>Favorite animal\u2192 <input type="text" name="animal" required></li>\n'
+ '<li>Secret answer = <input type="text" name="answer" required></li>'
)
def test_initial_data(self):
@@ -1734,8 +1734,8 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#39;xss&#39;)&lt;/
p = UserRegistration(auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" value="django" maxlength="10" required /></li>
-<li>Password: <input type="password" name="password" required /></li>"""
+ """<li>Username: <input type="text" name="username" value="django" maxlength="10" required></li>
+<li>Password: <input type="password" name="password" required></li>"""
)
# Here, we're submitting data, so the initial value will *not* be displayed.
@@ -1743,24 +1743,24 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#39;xss&#39;)&lt;/
self.assertHTMLEqual(
p.as_ul(),
"""<li><ul class="errorlist"><li>This field is required.</li></ul>
-Username: <input type="text" name="username" maxlength="10" required /></li>
+Username: <input type="text" name="username" maxlength="10" required></li>
<li><ul class="errorlist"><li>This field is required.</li></ul>
-Password: <input type="password" name="password" required /></li>"""
+Password: <input type="password" name="password" required></li>"""
)
p = UserRegistration({'username': ''}, auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
"""<li><ul class="errorlist"><li>This field is required.</li></ul>
-Username: <input type="text" name="username" maxlength="10" required /></li>
+Username: <input type="text" name="username" maxlength="10" required></li>
<li><ul class="errorlist"><li>This field is required.</li></ul>
-Password: <input type="password" name="password" required /></li>"""
+Password: <input type="password" name="password" required></li>"""
)
p = UserRegistration({'username': 'foo'}, auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" value="foo" maxlength="10" required /></li>
+ """<li>Username: <input type="text" name="username" value="foo" maxlength="10" required></li>
<li><ul class="errorlist"><li>This field is required.</li></ul>
-Password: <input type="password" name="password" required /></li>"""
+Password: <input type="password" name="password" required></li>"""
)
# An 'initial' value is *not* used as a fallback if data is not provided. In this
@@ -1784,14 +1784,14 @@ Password: <input type="password" name="password" required /></li>"""
p = UserRegistration(initial={'username': 'django'}, auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" value="django" maxlength="10" required /></li>
-<li>Password: <input type="password" name="password" required /></li>"""
+ """<li>Username: <input type="text" name="username" value="django" maxlength="10" required></li>
+<li>Password: <input type="password" name="password" required></li>"""
)
p = UserRegistration(initial={'username': 'stephane'}, auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" value="stephane" maxlength="10" required /></li>
-<li>Password: <input type="password" name="password" required /></li>"""
+ """<li>Username: <input type="text" name="username" value="stephane" maxlength="10" required></li>
+<li>Password: <input type="password" name="password" required></li>"""
)
# The 'initial' parameter is meaningless if you pass data.
@@ -1799,23 +1799,23 @@ Password: <input type="password" name="password" required /></li>"""
self.assertHTMLEqual(
p.as_ul(),
"""<li><ul class="errorlist"><li>This field is required.</li></ul>
-Username: <input type="text" name="username" maxlength="10" required /></li>
+Username: <input type="text" name="username" maxlength="10" required></li>
<li><ul class="errorlist"><li>This field is required.</li></ul>
-Password: <input type="password" name="password" required /></li>"""
+Password: <input type="password" name="password" required></li>"""
)
p = UserRegistration({'username': ''}, initial={'username': 'django'}, auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
"""<li><ul class="errorlist"><li>This field is required.</li></ul>
-Username: <input type="text" name="username" maxlength="10" required /></li>
+Username: <input type="text" name="username" maxlength="10" required></li>
<li><ul class="errorlist"><li>This field is required.</li></ul>
-Password: <input type="password" name="password" required /></li>"""
+Password: <input type="password" name="password" required></li>"""
)
p = UserRegistration({'username': 'foo'}, initial={'username': 'django'}, auto_id=False)
self.assertHTMLEqual(
- p.as_ul(), """<li>Username: <input type="text" name="username" value="foo" maxlength="10" required /></li>
+ p.as_ul(), """<li>Username: <input type="text" name="username" value="foo" maxlength="10" required></li>
<li><ul class="errorlist"><li>This field is required.</li></ul>
-Password: <input type="password" name="password" required /></li>"""
+Password: <input type="password" name="password" required></li>"""
)
# A dynamic 'initial' value is *not* used as a fallback if data is not provided.
@@ -1834,8 +1834,8 @@ Password: <input type="password" name="password" required /></li>"""
p = UserRegistration(initial={'username': 'babik'}, auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" value="babik" maxlength="10" required /></li>
-<li>Password: <input type="password" name="password" required /></li>"""
+ """<li>Username: <input type="text" name="username" value="babik" maxlength="10" required></li>
+<li>Password: <input type="password" name="password" required></li>"""
)
def test_callable_initial_data(self):
@@ -1863,8 +1863,8 @@ Password: <input type="password" name="password" required /></li>"""
p = UserRegistration(initial={'username': initial_django, 'options': initial_options}, auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" value="django" maxlength="10" required /></li>
-<li>Password: <input type="password" name="password" required /></li>
+ """<li>Username: <input type="text" name="username" value="django" maxlength="10" required></li>
+<li>Password: <input type="password" name="password" required></li>
<li>Options: <select multiple name="options" required>
<option value="f" selected>foo</option>
<option value="b" selected>bar</option>
@@ -1877,9 +1877,9 @@ Password: <input type="password" name="password" required /></li>"""
self.assertHTMLEqual(
p.as_ul(),
"""<li><ul class="errorlist"><li>This field is required.</li></ul>
-Username: <input type="text" name="username" maxlength="10" required /></li>
+Username: <input type="text" name="username" maxlength="10" required></li>
<li><ul class="errorlist"><li>This field is required.</li></ul>
-Password: <input type="password" name="password" required /></li>
+Password: <input type="password" name="password" required></li>
<li><ul class="errorlist"><li>This field is required.</li></ul>
Options: <select multiple name="options" required>
<option value="f">foo</option>
@@ -1891,9 +1891,9 @@ Options: <select multiple name="options" required>
self.assertHTMLEqual(
p.as_ul(),
"""<li><ul class="errorlist"><li>This field is required.</li></ul>
- Username: <input type="text" name="username" maxlength="10" required /></li>
+ Username: <input type="text" name="username" maxlength="10" required></li>
<li><ul class="errorlist"><li>This field is required.</li></ul>
-Password: <input type="password" name="password" required /></li>
+Password: <input type="password" name="password" required></li>
<li><ul class="errorlist"><li>This field is required.</li></ul>
Options: <select multiple name="options" required>
<option value="f">foo</option>
@@ -1906,9 +1906,9 @@ Options: <select multiple name="options" required>
)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" value="foo" maxlength="10" required /></li>
+ """<li>Username: <input type="text" name="username" value="foo" maxlength="10" required></li>
<li><ul class="errorlist"><li>This field is required.</li></ul>
-Password: <input type="password" name="password" required /></li>
+Password: <input type="password" name="password" required></li>
<li>Options: <select multiple name="options" required>
<option value="f" selected>foo</option>
<option value="b" selected>bar</option>
@@ -1936,8 +1936,8 @@ Password: <input type="password" name="password" required /></li>
p = UserRegistration(auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" value="django" maxlength="10" required /></li>
-<li>Password: <input type="password" name="password" required /></li>
+ """<li>Username: <input type="text" name="username" value="django" maxlength="10" required></li>
+<li>Password: <input type="password" name="password" required></li>
<li>Options: <select multiple name="options" required>
<option value="f">foo</option>
<option value="b" selected>bar</option>
@@ -1947,8 +1947,8 @@ Password: <input type="password" name="password" required /></li>
p = UserRegistration(initial={'username': initial_stephane, 'options': initial_options}, auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" value="stephane" maxlength="10" required /></li>
-<li>Password: <input type="password" name="password" required /></li>
+ """<li>Username: <input type="text" name="username" value="stephane" maxlength="10" required></li>
+<li>Password: <input type="password" name="password" required></li>
<li>Options: <select multiple name="options" required>
<option value="f" selected>foo</option>
<option value="b" selected>bar</option>
@@ -2112,23 +2112,23 @@ Password: <input type="password" name="password" required /></li>
p = UserRegistration(auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" maxlength="10" required />
+ """<li>Username: <input type="text" name="username" maxlength="10" required>
<span class="helptext">e.g., user@example.com</span></li>
-<li>Password: <input type="password" name="password" required />
+<li>Password: <input type="password" name="password" required>
<span class="helptext">Wählen Sie mit Bedacht.</span></li>"""
)
self.assertHTMLEqual(
p.as_p(),
- """<p>Username: <input type="text" name="username" maxlength="10" required />
+ """<p>Username: <input type="text" name="username" maxlength="10" required>
<span class="helptext">e.g., user@example.com</span></p>
-<p>Password: <input type="password" name="password" required />
+<p>Password: <input type="password" name="password" required>
<span class="helptext">Wählen Sie mit Bedacht.</span></p>"""
)
self.assertHTMLEqual(
p.as_table(),
- """<tr><th>Username:</th><td><input type="text" name="username" maxlength="10" required /><br />
+ """<tr><th>Username:</th><td><input type="text" name="username" maxlength="10" required><br>
<span class="helptext">e.g., user@example.com</span></td></tr>
-<tr><th>Password:</th><td><input type="password" name="password" required /><br />
+<tr><th>Password:</th><td><input type="password" name="password" required><br>
<span class="helptext">Wählen Sie mit Bedacht.</span></td></tr>"""
)
@@ -2136,10 +2136,10 @@ Password: <input type="password" name="password" required /></li>
p = UserRegistration({'username': 'foo'}, auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" value="foo" maxlength="10" required />
+ """<li>Username: <input type="text" name="username" value="foo" maxlength="10" required>
<span class="helptext">e.g., user@example.com</span></li>
<li><ul class="errorlist"><li>This field is required.</li></ul>
-Password: <input type="password" name="password" required />
+Password: <input type="password" name="password" required>
<span class="helptext">Wählen Sie mit Bedacht.</span></li>"""
)
@@ -2153,10 +2153,10 @@ Password: <input type="password" name="password" required />
p = UserRegistration(auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" maxlength="10" required />
+ """<li>Username: <input type="text" name="username" maxlength="10" required>
<span class="helptext">e.g., user@example.com</span></li>
-<li>Password: <input type="password" name="password" required />
-<input type="hidden" name="next" value="/" /></li>"""
+<li>Password: <input type="password" name="password" required>
+<input type="hidden" name="next" value="/"></li>"""
)
def test_subclassing_forms(self):
@@ -2174,17 +2174,17 @@ Password: <input type="password" name="password" required />
p = Person(auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """<li>First name: <input type="text" name="first_name" required /></li>
-<li>Last name: <input type="text" name="last_name" required /></li>
-<li>Birthday: <input type="text" name="birthday" required /></li>"""
+ """<li>First name: <input type="text" name="first_name" required></li>
+<li>Last name: <input type="text" name="last_name" required></li>
+<li>Birthday: <input type="text" name="birthday" required></li>"""
)
m = Musician(auto_id=False)
self.assertHTMLEqual(
m.as_ul(),
- """<li>First name: <input type="text" name="first_name" required /></li>
-<li>Last name: <input type="text" name="last_name" required /></li>
-<li>Birthday: <input type="text" name="birthday" required /></li>
-<li>Instrument: <input type="text" name="instrument" required /></li>"""
+ """<li>First name: <input type="text" name="first_name" required></li>
+<li>Last name: <input type="text" name="last_name" required></li>
+<li>Birthday: <input type="text" name="birthday" required></li>
+<li>Instrument: <input type="text" name="instrument" required></li>"""
)
# Yes, you can subclass multiple forms. The fields are added in the order in
@@ -2201,11 +2201,11 @@ Password: <input type="password" name="password" required />
haircut_type = CharField()
b = Beatle(auto_id=False)
- self.assertHTMLEqual(b.as_ul(), """<li>Instrument: <input type="text" name="instrument" required /></li>
-<li>First name: <input type="text" name="first_name" required /></li>
-<li>Last name: <input type="text" name="last_name" required /></li>
-<li>Birthday: <input type="text" name="birthday" required /></li>
-<li>Haircut type: <input type="text" name="haircut_type" required /></li>""")
+ self.assertHTMLEqual(b.as_ul(), """<li>Instrument: <input type="text" name="instrument" required></li>
+<li>First name: <input type="text" name="first_name" required></li>
+<li>Last name: <input type="text" name="last_name" required></li>
+<li>Birthday: <input type="text" name="birthday" required></li>
+<li>Haircut type: <input type="text" name="haircut_type" required></li>""")
def test_forms_with_prefixes(self):
# Sometimes it's necessary to have multiple forms display on the same HTML page,
@@ -2229,23 +2229,23 @@ Password: <input type="password" name="password" required />
self.assertHTMLEqual(
p.as_ul(),
"""<li><label for="id_person1-first_name">First name:</label>
-<input type="text" name="person1-first_name" value="John" id="id_person1-first_name" required /></li>
+<input type="text" name="person1-first_name" value="John" id="id_person1-first_name" required></li>
<li><label for="id_person1-last_name">Last name:</label>
-<input type="text" name="person1-last_name" value="Lennon" id="id_person1-last_name" required /></li>
+<input type="text" name="person1-last_name" value="Lennon" id="id_person1-last_name" required></li>
<li><label for="id_person1-birthday">Birthday:</label>
-<input type="text" name="person1-birthday" value="1940-10-9" id="id_person1-birthday" required /></li>"""
+<input type="text" name="person1-birthday" value="1940-10-9" id="id_person1-birthday" required></li>"""
)
self.assertHTMLEqual(
str(p['first_name']),
- '<input type="text" name="person1-first_name" value="John" id="id_person1-first_name" required />'
+ '<input type="text" name="person1-first_name" value="John" id="id_person1-first_name" required>'
)
self.assertHTMLEqual(
str(p['last_name']),
- '<input type="text" name="person1-last_name" value="Lennon" id="id_person1-last_name" required />'
+ '<input type="text" name="person1-last_name" value="Lennon" id="id_person1-last_name" required>'
)
self.assertHTMLEqual(
str(p['birthday']),
- '<input type="text" name="person1-birthday" value="1940-10-9" id="id_person1-birthday" required />'
+ '<input type="text" name="person1-birthday" value="1940-10-9" id="id_person1-birthday" required>'
)
self.assertEqual(p.errors, {})
self.assertTrue(p.is_valid())
@@ -2318,11 +2318,11 @@ Password: <input type="password" name="password" required />
self.assertHTMLEqual(
p.as_ul(),
"""<li><label for="id_foo-prefix-first_name">First name:</label>
-<input type="text" name="foo-prefix-first_name" id="id_foo-prefix-first_name" required /></li>
+<input type="text" name="foo-prefix-first_name" id="id_foo-prefix-first_name" required></li>
<li><label for="id_foo-prefix-last_name">Last name:</label>
-<input type="text" name="foo-prefix-last_name" id="id_foo-prefix-last_name" required /></li>
+<input type="text" name="foo-prefix-last_name" id="id_foo-prefix-last_name" required></li>
<li><label for="id_foo-prefix-birthday">Birthday:</label>
-<input type="text" name="foo-prefix-birthday" id="id_foo-prefix-birthday" required /></li>"""
+<input type="text" name="foo-prefix-birthday" id="id_foo-prefix-birthday" required></li>"""
)
data = {
'foo-prefix-first_name': 'John',
@@ -2400,7 +2400,7 @@ Password: <input type="password" name="password" required />
f = FileForm(auto_id=False)
self.assertHTMLEqual(
f.as_table(),
- '<tr><th>File1:</th><td><input type="file" name="file1" required /></td></tr>',
+ '<tr><th>File1:</th><td><input type="file" name="file1" required></td></tr>',
)
f = FileForm(data={}, files={}, auto_id=False)
@@ -2408,7 +2408,7 @@ Password: <input type="password" name="password" required />
f.as_table(),
'<tr><th>File1:</th><td>'
'<ul class="errorlist"><li>This field is required.</li></ul>'
- '<input type="file" name="file1" required /></td></tr>'
+ '<input type="file" name="file1" required></td></tr>'
)
f = FileForm(data={}, files={'file1': SimpleUploadedFile('name', b'')}, auto_id=False)
@@ -2416,7 +2416,7 @@ Password: <input type="password" name="password" required />
f.as_table(),
'<tr><th>File1:</th><td>'
'<ul class="errorlist"><li>The submitted file is empty.</li></ul>'
- '<input type="file" name="file1" required /></td></tr>'
+ '<input type="file" name="file1" required></td></tr>'
)
f = FileForm(data={}, files={'file1': 'something that is not a file'}, auto_id=False)
@@ -2425,13 +2425,13 @@ Password: <input type="password" name="password" required />
'<tr><th>File1:</th><td>'
'<ul class="errorlist"><li>No file was submitted. Check the '
'encoding type on the form.</li></ul>'
- '<input type="file" name="file1" required /></td></tr>'
+ '<input type="file" name="file1" required></td></tr>'
)
f = FileForm(data={}, files={'file1': SimpleUploadedFile('name', b'some content')}, auto_id=False)
self.assertHTMLEqual(
f.as_table(),
- '<tr><th>File1:</th><td><input type="file" name="file1" required /></td></tr>',
+ '<tr><th>File1:</th><td><input type="file" name="file1" required></td></tr>',
)
self.assertTrue(f.is_valid())
@@ -2439,7 +2439,7 @@ Password: <input type="password" name="password" required />
f = FileForm(data={}, files={'file1': file1}, auto_id=False)
self.assertHTMLEqual(
f.as_table(),
- '<tr><th>File1:</th><td><input type="file" name="file1" required /></td></tr>',
+ '<tr><th>File1:</th><td><input type="file" name="file1" required></td></tr>',
)
# A required file field with initial data should not contain the
@@ -2448,7 +2448,7 @@ Password: <input type="password" name="password" required />
f = FileForm(initial={'file1': 'resume.txt'}, auto_id=False)
self.assertHTMLEqual(
f.as_table(),
- '<tr><th>File1:</th><td><input type="file" name="file1" /></td></tr>',
+ '<tr><th>File1:</th><td><input type="file" name="file1"></td></tr>',
)
def test_filefield_initial_callable(self):
@@ -2483,18 +2483,18 @@ Password: <input type="password" name="password" required />
t = Template(
'<form action="" method="post">\n'
- '<table>\n{{ form }}\n</table>\n<input type="submit" required />\n</form>'
+ '<table>\n{{ form }}\n</table>\n<input type="submit" required>\n</form>'
)
return t.render(Context({'form': form}))
# Case 1: GET (an empty form, with no errors).)
self.assertHTMLEqual(my_function('GET', {}), """<form action="" method="post">
<table>
-<tr><th>Username:</th><td><input type="text" name="username" maxlength="10" required /></td></tr>
-<tr><th>Password1:</th><td><input type="password" name="password1" required /></td></tr>
-<tr><th>Password2:</th><td><input type="password" name="password2" required /></td></tr>
+<tr><th>Username:</th><td><input type="text" name="username" maxlength="10" required></td></tr>
+<tr><th>Password1:</th><td><input type="password" name="password1" required></td></tr>
+<tr><th>Password2:</th><td><input type="password" name="password2" required></td></tr>
</table>
-<input type="submit" required />
+<input type="submit" required>
</form>""")
# Case 2: POST with erroneous data (a redisplayed form, with errors).)
self.assertHTMLEqual(
@@ -2504,11 +2504,11 @@ Password: <input type="password" name="password" required />
<tr><td colspan="2"><ul class="errorlist nonfield"><li>Please make sure your passwords match.</li></ul></td></tr>
<tr><th>Username:</th><td><ul class="errorlist">
<li>Ensure this value has at most 10 characters (it has 23).</li></ul>
-<input type="text" name="username" value="this-is-a-long-username" maxlength="10" required /></td></tr>
-<tr><th>Password1:</th><td><input type="password" name="password1" required /></td></tr>
-<tr><th>Password2:</th><td><input type="password" name="password2" required /></td></tr>
+<input type="text" name="username" value="this-is-a-long-username" maxlength="10" required></td></tr>
+<tr><th>Password1:</th><td><input type="password" name="password1" required></td></tr>
+<tr><th>Password2:</th><td><input type="password" name="password2" required></td></tr>
</table>
-<input type="submit" required />
+<input type="submit" required>
</form>"""
)
# Case 3: POST with valid data (the success message).)
@@ -2539,23 +2539,23 @@ Password: <input type="password" name="password" required />
{{ form.username.errors.as_ul }}<p><label>Your username: {{ form.username }}</label></p>
{{ form.password1.errors.as_ul }}<p><label>Password: {{ form.password1 }}</label></p>
{{ form.password2.errors.as_ul }}<p><label>Password (again): {{ form.password2 }}</label></p>
-<input type="submit" required />
+<input type="submit" required>
</form>''')
self.assertHTMLEqual(t.render(Context({'form': UserRegistration(auto_id=False)})), """<form action="">
-<p><label>Your username: <input type="text" name="username" maxlength="10" required /></label></p>
-<p><label>Password: <input type="password" name="password1" required /></label></p>
-<p><label>Password (again): <input type="password" name="password2" required /></label></p>
-<input type="submit" required />
+<p><label>Your username: <input type="text" name="username" maxlength="10" required></label></p>
+<p><label>Password: <input type="password" name="password1" required></label></p>
+<p><label>Password (again): <input type="password" name="password2" required></label></p>
+<input type="submit" required>
</form>""")
self.assertHTMLEqual(
t.render(Context({'form': UserRegistration({'username': 'django'}, auto_id=False)})),
"""<form action="">
-<p><label>Your username: <input type="text" name="username" value="django" maxlength="10" required /></label></p>
+<p><label>Your username: <input type="text" name="username" value="django" maxlength="10" required></label></p>
<ul class="errorlist"><li>This field is required.</li></ul><p>
-<label>Password: <input type="password" name="password1" required /></label></p>
+<label>Password: <input type="password" name="password1" required></label></p>
<ul class="errorlist"><li>This field is required.</li></ul>
-<p><label>Password (again): <input type="password" name="password2" required /></label></p>
-<input type="submit" required />
+<p><label>Password (again): <input type="password" name="password2" required></label></p>
+<input type="submit" required>
</form>"""
)
@@ -2567,13 +2567,13 @@ Password: <input type="password" name="password" required />
<p><label>{{ form.username.label }}: {{ form.username }}</label></p>
<p><label>{{ form.password1.label }}: {{ form.password1 }}</label></p>
<p><label>{{ form.password2.label }}: {{ form.password2 }}</label></p>
-<input type="submit" required />
+<input type="submit" required>
</form>''')
self.assertHTMLEqual(t.render(Context({'form': UserRegistration(auto_id=False)})), """<form action="">
-<p><label>Username: <input type="text" name="username" maxlength="10" required /></label></p>
-<p><label>Password1: <input type="password" name="password1" required /></label></p>
-<p><label>Password2: <input type="password" name="password2" required /></label></p>
-<input type="submit" required />
+<p><label>Username: <input type="text" name="username" maxlength="10" required></label></p>
+<p><label>Password1: <input type="password" name="password1" required></label></p>
+<p><label>Password2: <input type="password" name="password2" required></label></p>
+<input type="submit" required>
</form>""")
# User form.[field].label_tag to output a field's label with a <label> tag
@@ -2584,40 +2584,40 @@ Password: <input type="password" name="password" required />
<p>{{ form.username.label_tag }} {{ form.username }}</p>
<p>{{ form.password1.label_tag }} {{ form.password1 }}</p>
<p>{{ form.password2.label_tag }} {{ form.password2 }}</p>
-<input type="submit" required />
+<input type="submit" required>
</form>''')
self.assertHTMLEqual(t.render(Context({'form': UserRegistration(auto_id=False)})), """<form action="">
-<p>Username: <input type="text" name="username" maxlength="10" required /></p>
-<p>Password1: <input type="password" name="password1" required /></p>
-<p>Password2: <input type="password" name="password2" required /></p>
-<input type="submit" required />
+<p>Username: <input type="text" name="username" maxlength="10" required></p>
+<p>Password1: <input type="password" name="password1" required></p>
+<p>Password2: <input type="password" name="password2" required></p>
+<input type="submit" required>
</form>""")
self.assertHTMLEqual(t.render(Context({'form': UserRegistration(auto_id='id_%s')})), """<form action="">
<p><label for="id_username">Username:</label>
-<input id="id_username" type="text" name="username" maxlength="10" required /></p>
+<input id="id_username" type="text" name="username" maxlength="10" required></p>
<p><label for="id_password1">Password1:</label>
-<input type="password" name="password1" id="id_password1" required /></p>
+<input type="password" name="password1" id="id_password1" required></p>
<p><label for="id_password2">Password2:</label>
-<input type="password" name="password2" id="id_password2" required /></p>
-<input type="submit" required />
+<input type="password" name="password2" id="id_password2" required></p>
+<input type="submit" required>
</form>""")
# User form.[field].help_text to output a field's help text. If the given field
# does not have help text, nothing will be output.
t = Template('''<form action="">
-<p>{{ form.username.label_tag }} {{ form.username }}<br />{{ form.username.help_text }}</p>
+<p>{{ form.username.label_tag }} {{ form.username }}<br>{{ form.username.help_text }}</p>
<p>{{ form.password1.label_tag }} {{ form.password1 }}</p>
<p>{{ form.password2.label_tag }} {{ form.password2 }}</p>
-<input type="submit" required />
+<input type="submit" required>
</form>''')
self.assertHTMLEqual(
t.render(Context({'form': UserRegistration(auto_id=False)})),
"""<form action="">
-<p>Username: <input type="text" name="username" maxlength="10" required /><br />
+<p>Username: <input type="text" name="username" maxlength="10" required><br>
Good luck picking a username that doesn&#39;t already exist.</p>
-<p>Password1: <input type="password" name="password1" required /></p>
-<p>Password2: <input type="password" name="password2" required /></p>
-<input type="submit" required />
+<p>Password1: <input type="password" name="password1" required></p>
+<p>Password2: <input type="password" name="password2" required></p>
+<input type="submit" required>
</form>"""
)
self.assertEqual(
@@ -2633,17 +2633,17 @@ Good luck picking a username that doesn&#39;t already exist.</p>
{{ form.username.errors.as_ul }}<p><label>Your username: {{ form.username }}</label></p>
{{ form.password1.errors.as_ul }}<p><label>Password: {{ form.password1 }}</label></p>
{{ form.password2.errors.as_ul }}<p><label>Password (again): {{ form.password2 }}</label></p>
-<input type="submit" required />
+<input type="submit" required>
</form>''')
self.assertHTMLEqual(
t.render(Context({
'form': UserRegistration({'username': 'django', 'password1': 'foo', 'password2': 'bar'}, auto_id=False)
})),
"""<form action="">
-<p><label>Your username: <input type="text" name="username" value="django" maxlength="10" required /></label></p>
-<p><label>Password: <input type="password" name="password1" required /></label></p>
-<p><label>Password (again): <input type="password" name="password2" required /></label></p>
-<input type="submit" required />
+<p><label>Your username: <input type="text" name="username" value="django" maxlength="10" required></label></p>
+<p><label>Password: <input type="password" name="password1" required></label></p>
+<p><label>Password (again): <input type="password" name="password2" required></label></p>
+<input type="submit" required>
</form>"""
)
t = Template('''<form action="">
@@ -2651,7 +2651,7 @@ Good luck picking a username that doesn&#39;t already exist.</p>
{{ form.username.errors.as_ul }}<p><label>Your username: {{ form.username }}</label></p>
{{ form.password1.errors.as_ul }}<p><label>Password: {{ form.password1 }}</label></p>
{{ form.password2.errors.as_ul }}<p><label>Password (again): {{ form.password2 }}</label></p>
-<input type="submit" required />
+<input type="submit" required>
</form>''')
self.assertHTMLEqual(
t.render(Context({
@@ -2659,10 +2659,10 @@ Good luck picking a username that doesn&#39;t already exist.</p>
})),
"""<form action="">
<ul class="errorlist nonfield"><li>Please make sure your passwords match.</li></ul>
-<p><label>Your username: <input type="text" name="username" value="django" maxlength="10" required /></label></p>
-<p><label>Password: <input type="password" name="password1" required /></label></p>
-<p><label>Password (again): <input type="password" name="password2" required /></label></p>
-<input type="submit" required />
+<p><label>Your username: <input type="text" name="username" value="django" maxlength="10" required></label></p>
+<p><label>Password: <input type="password" name="password1" required></label></p>
+<p><label>Password (again): <input type="password" name="password2" required></label></p>
+<input type="submit" required>
</form>"""
)
@@ -2729,8 +2729,8 @@ Good luck picking a username that doesn&#39;t already exist.</p>
self.assertHTMLEqual(
MyForm().as_table(),
'<tr><th><label for="id_field1">Field1:</label></th>'
- '<td><input id="id_field1" type="text" name="field1" maxlength="50" required />'
- '<input type="hidden" name="initial-field1" id="initial-id_field1" /></td></tr>'
+ '<td><input id="id_field1" type="text" name="field1" maxlength="50" required>'
+ '<input type="hidden" name="initial-field1" id="initial-id_field1"></td></tr>'
)
def test_error_html_required_html_classes(self):
@@ -2747,33 +2747,33 @@ Good luck picking a username that doesn&#39;t already exist.</p>
self.assertHTMLEqual(
p.as_ul(),
"""<li class="required error"><ul class="errorlist"><li>This field is required.</li></ul>
-<label class="required" for="id_name">Name:</label> <input type="text" name="name" id="id_name" required /></li>
+<label class="required" for="id_name">Name:</label> <input type="text" name="name" id="id_name" required></li>
<li class="required"><label class="required" for="id_is_cool">Is cool:</label>
<select name="is_cool" id="id_is_cool">
<option value="1" selected>Unknown</option>
<option value="2">Yes</option>
<option value="3">No</option>
</select></li>
-<li><label for="id_email">Email:</label> <input type="email" name="email" id="id_email" /></li>
+<li><label for="id_email">Email:</label> <input type="email" name="email" id="id_email"></li>
<li class="required error"><ul class="errorlist"><li>This field is required.</li></ul>
-<label class="required" for="id_age">Age:</label> <input type="number" name="age" id="id_age" required /></li>"""
+<label class="required" for="id_age">Age:</label> <input type="number" name="age" id="id_age" required></li>"""
)
self.assertHTMLEqual(
p.as_p(),
"""<ul class="errorlist"><li>This field is required.</li></ul>
<p class="required error"><label class="required" for="id_name">Name:</label>
-<input type="text" name="name" id="id_name" required /></p>
+<input type="text" name="name" id="id_name" required></p>
<p class="required"><label class="required" for="id_is_cool">Is cool:</label>
<select name="is_cool" id="id_is_cool">
<option value="1" selected>Unknown</option>
<option value="2">Yes</option>
<option value="3">No</option>
</select></p>
-<p><label for="id_email">Email:</label> <input type="email" name="email" id="id_email" /></p>
+<p><label for="id_email">Email:</label> <input type="email" name="email" id="id_email"></p>
<ul class="errorlist"><li>This field is required.</li></ul>
<p class="required error"><label class="required" for="id_age">Age:</label>
-<input type="number" name="age" id="id_age" required /></p>"""
+<input type="number" name="age" id="id_age" required></p>"""
)
self.assertHTMLEqual(
@@ -2781,7 +2781,7 @@ Good luck picking a username that doesn&#39;t already exist.</p>
"""<tr class="required error">
<th><label class="required" for="id_name">Name:</label></th>
<td><ul class="errorlist"><li>This field is required.</li></ul>
-<input type="text" name="name" id="id_name" required /></td></tr>
+<input type="text" name="name" id="id_name" required></td></tr>
<tr class="required"><th><label class="required" for="id_is_cool">Is cool:</label></th>
<td><select name="is_cool" id="id_is_cool">
<option value="1" selected>Unknown</option>
@@ -2789,10 +2789,10 @@ Good luck picking a username that doesn&#39;t already exist.</p>
<option value="3">No</option>
</select></td></tr>
<tr><th><label for="id_email">Email:</label></th><td>
-<input type="email" name="email" id="id_email" /></td></tr>
+<input type="email" name="email" id="id_email"></td></tr>
<tr class="required error"><th><label class="required" for="id_age">Age:</label></th>
<td><ul class="errorlist"><li>This field is required.</li></ul>
-<input type="number" name="age" id="id_age" required /></td></tr>"""
+<input type="number" name="age" id="id_age" required></td></tr>"""
)
def test_label_has_required_css_class(self):
@@ -2819,8 +2819,8 @@ Good luck picking a username that doesn&#39;t already exist.</p>
form = EventForm()
self.assertHTMLEqual(
form.as_ul(),
- '<input type="hidden" name="happened_at_0" id="id_happened_at_0" />'
- '<input type="hidden" name="happened_at_1" id="id_happened_at_1" />'
+ '<input type="hidden" name="happened_at_0" id="id_happened_at_0">'
+ '<input type="hidden" name="happened_at_1" id="id_happened_at_1">'
)
def test_multivalue_field_validation(self):
@@ -3155,9 +3155,9 @@ Good luck picking a username that doesn&#39;t already exist.</p>
form = SomeForm()
self.assertHTMLEqual(
form.as_p(),
- '<p><input id="id_custom" name="custom" type="text" required /> custom'
- '<input id="id_hidden1" name="hidden1" type="hidden" />'
- '<input id="id_hidden2" name="hidden2" type="hidden" /></p>'
+ '<p><input id="id_custom" name="custom" type="text" required> custom'
+ '<input id="id_hidden1" name="hidden1" type="hidden">'
+ '<input id="id_hidden2" name="hidden2" type="hidden"></p>'
)
def test_field_name_with_hidden_input_and_non_matching_row_ender(self):
@@ -3174,7 +3174,7 @@ Good luck picking a username that doesn&#39;t already exist.</p>
return self._html_output(
normal_row='<p%(html_class_attr)s>%(field)s %(field_name)s</p>',
error_row='%s',
- row_ender='<hr /><hr />',
+ row_ender='<hr><hr>',
help_text_html=' %s',
errors_on_separate_row=True
)
@@ -3182,9 +3182,9 @@ Good luck picking a username that doesn&#39;t already exist.</p>
form = SomeForm()
self.assertHTMLEqual(
form.as_p(),
- '<p><input id="id_custom" name="custom" type="text" required /> custom</p>\n'
- '<input id="id_hidden1" name="hidden1" type="hidden" />'
- '<input id="id_hidden2" name="hidden2" type="hidden" /><hr /><hr />'
+ '<p><input id="id_custom" name="custom" type="text" required> custom</p>\n'
+ '<input id="id_hidden1" name="hidden1" type="hidden">'
+ '<input id="id_hidden2" name="hidden2" type="hidden"><hr><hr>'
)
def test_error_dict(self):
@@ -3312,23 +3312,23 @@ Good luck picking a username that doesn&#39;t already exist.</p>
"""<li><ul class="errorlist nonfield">
<li>(Hidden field last_name) This field is required.</li></ul></li><li>
<label for="id_first_name">First name:</label>
-<input id="id_first_name" name="first_name" type="text" value="John" required />
-<input id="id_last_name" name="last_name" type="hidden" /></li>"""
+<input id="id_first_name" name="first_name" type="text" value="John" required>
+<input id="id_last_name" name="last_name" type="hidden"></li>"""
)
self.assertHTMLEqual(
p.as_p(),
"""<ul class="errorlist nonfield"><li>(Hidden field last_name) This field is required.</li></ul>
<p><label for="id_first_name">First name:</label>
-<input id="id_first_name" name="first_name" type="text" value="John" required />
-<input id="id_last_name" name="last_name" type="hidden" /></p>"""
+<input id="id_first_name" name="first_name" type="text" value="John" required>
+<input id="id_last_name" name="last_name" type="hidden"></p>"""
)
self.assertHTMLEqual(
p.as_table(),
"""<tr><td colspan="2"><ul class="errorlist nonfield">
<li>(Hidden field last_name) This field is required.</li></ul></td></tr>
<tr><th><label for="id_first_name">First name:</label></th><td>
-<input id="id_first_name" name="first_name" type="text" value="John" required />
-<input id="id_last_name" name="last_name" type="hidden" /></td></tr>"""
+<input id="id_first_name" name="first_name" type="text" value="John" required>
+<input id="id_last_name" name="last_name" type="hidden"></td></tr>"""
)
def test_error_list_with_non_field_errors_has_correct_class(self):
@@ -3349,9 +3349,9 @@ Good luck picking a username that doesn&#39;t already exist.</p>
"""<li>
<ul class="errorlist nonfield"><li>Generic validation error</li></ul></li>
<li><label for="id_first_name">First name:</label>
-<input id="id_first_name" name="first_name" type="text" value="John" required /></li>
+<input id="id_first_name" name="first_name" type="text" value="John" required></li>
<li><label for="id_last_name">Last name:</label>
-<input id="id_last_name" name="last_name" type="text" value="Lennon" required /></li>"""
+<input id="id_last_name" name="last_name" type="text" value="Lennon" required></li>"""
)
self.assertHTMLEqual(
p.non_field_errors().as_text(),
@@ -3361,17 +3361,17 @@ Good luck picking a username that doesn&#39;t already exist.</p>
p.as_p(),
"""<ul class="errorlist nonfield"><li>Generic validation error</li></ul>
<p><label for="id_first_name">First name:</label>
-<input id="id_first_name" name="first_name" type="text" value="John" required /></p>
+<input id="id_first_name" name="first_name" type="text" value="John" required></p>
<p><label for="id_last_name">Last name:</label>
-<input id="id_last_name" name="last_name" type="text" value="Lennon" required /></p>"""
+<input id="id_last_name" name="last_name" type="text" value="Lennon" required></p>"""
)
self.assertHTMLEqual(
p.as_table(),
"""<tr><td colspan="2"><ul class="errorlist nonfield"><li>Generic validation error</li></ul></td></tr>
<tr><th><label for="id_first_name">First name:</label></th><td>
-<input id="id_first_name" name="first_name" type="text" value="John" required /></td></tr>
+<input id="id_first_name" name="first_name" type="text" value="John" required></td></tr>
<tr><th><label for="id_last_name">Last name:</label></th><td>
-<input id="id_last_name" name="last_name" type="text" value="Lennon" required /></td></tr>"""
+<input id="id_last_name" name="last_name" type="text" value="Lennon" required></td></tr>"""
)
def test_errorlist_override(self):
@@ -3392,11 +3392,11 @@ Good luck picking a username that doesn&#39;t already exist.</p>
data = {'email': 'invalid'}
f = CommentForm(data, auto_id=False, error_class=DivErrorList)
- self.assertHTMLEqual(f.as_p(), """<p>Name: <input type="text" name="name" maxlength="50" /></p>
+ self.assertHTMLEqual(f.as_p(), """<p>Name: <input type="text" name="name" maxlength="50"></p>
<div class="errorlist"><div class="error">Enter a valid email address.</div></div>
-<p>Email: <input type="email" name="email" value="invalid" required /></p>
+<p>Email: <input type="email" name="email" value="invalid" required></p>
<div class="errorlist"><div class="error">This field is required.</div></div>
-<p>Comment: <input type="text" name="comment" required /></p>""")
+<p>Comment: <input type="text" name="comment" required></p>""")
def test_error_escaping(self):
class TestForm(Form):
@@ -3415,8 +3415,8 @@ Good luck picking a username that doesn&#39;t already exist.</p>
'<li><ul class="errorlist nonfield"><li>(Hidden field hidden) Foo &amp; &quot;bar&quot;!</li></ul></li>'
'<li><ul class="errorlist"><li>Foo &amp; &quot;bar&quot;!</li></ul>'
'<label for="id_visible">Visible:</label> '
- '<input type="text" name="visible" value="b" id="id_visible" required />'
- '<input type="hidden" name="hidden" value="a" id="id_hidden" /></li>'
+ '<input type="text" name="visible" value="b" id="id_visible" required>'
+ '<input type="hidden" name="hidden" value="a" id="id_hidden"></li>'
)
def test_baseform_repr(self):
@@ -3529,8 +3529,8 @@ Good luck picking a username that doesn&#39;t already exist.</p>
form = MyForm()
self.assertHTMLEqual(
form.as_p(),
- '<p><label for="id_f1">F1:</label> <input id="id_f1" maxlength="30" name="f1" type="text" required /></p>'
- '<p><label for="id_f2">F2:</label> <input id="id_f2" maxlength="30" name="f2" type="text" /></p>'
+ '<p><label for="id_f1">F1:</label> <input id="id_f1" maxlength="30" name="f1" type="text" required></p>'
+ '<p><label for="id_f2">F2:</label> <input id="id_f2" maxlength="30" name="f2" type="text"></p>'
'<p><label for="id_f3">F3:</label> <textarea cols="40" id="id_f3" name="f3" rows="10" required>'
'</textarea></p>'
'<p><label for="id_f4">F4:</label> <select id="id_f4" name="f4">'
@@ -3541,8 +3541,8 @@ Good luck picking a username that doesn&#39;t already exist.</p>
self.assertHTMLEqual(
form.as_ul(),
'<li><label for="id_f1">F1:</label> '
- '<input id="id_f1" maxlength="30" name="f1" type="text" required /></li>'
- '<li><label for="id_f2">F2:</label> <input id="id_f2" maxlength="30" name="f2" type="text" /></li>'
+ '<input id="id_f1" maxlength="30" name="f1" type="text" required></li>'
+ '<li><label for="id_f2">F2:</label> <input id="id_f2" maxlength="30" name="f2" type="text"></li>'
'<li><label for="id_f3">F3:</label> <textarea cols="40" id="id_f3" name="f3" rows="10" required>'
'</textarea></li>'
'<li><label for="id_f4">F4:</label> <select id="id_f4" name="f4">'
@@ -3553,9 +3553,9 @@ Good luck picking a username that doesn&#39;t already exist.</p>
self.assertHTMLEqual(
form.as_table(),
'<tr><th><label for="id_f1">F1:</label></th>'
- '<td><input id="id_f1" maxlength="30" name="f1" type="text" required /></td></tr>'
+ '<td><input id="id_f1" maxlength="30" name="f1" type="text" required></td></tr>'
'<tr><th><label for="id_f2">F2:</label></th>'
- '<td><input id="id_f2" maxlength="30" name="f2" type="text" /></td></tr>'
+ '<td><input id="id_f2" maxlength="30" name="f2" type="text"></td></tr>'
'<tr><th><label for="id_f3">F3:</label></th>'
'<td><textarea cols="40" id="id_f3" name="f3" rows="10" required>'
'</textarea></td></tr>'
@@ -3576,8 +3576,8 @@ Good luck picking a username that doesn&#39;t already exist.</p>
form = MyForm()
self.assertHTMLEqual(
form.as_p(),
- '<p><label for="id_f1">F1:</label> <input id="id_f1" maxlength="30" name="f1" type="text" /></p>'
- '<p><label for="id_f2">F2:</label> <input id="id_f2" maxlength="30" name="f2" type="text" /></p>'
+ '<p><label for="id_f1">F1:</label> <input id="id_f1" maxlength="30" name="f1" type="text"></p>'
+ '<p><label for="id_f2">F2:</label> <input id="id_f2" maxlength="30" name="f2" type="text"></p>'
'<p><label for="id_f3">F3:</label> <textarea cols="40" id="id_f3" name="f3" rows="10">'
'</textarea></p>'
'<p><label for="id_f4">F4:</label> <select id="id_f4" name="f4">'
@@ -3587,8 +3587,8 @@ Good luck picking a username that doesn&#39;t already exist.</p>
)
self.assertHTMLEqual(
form.as_ul(),
- '<li><label for="id_f1">F1:</label> <input id="id_f1" maxlength="30" name="f1" type="text" /></li>'
- '<li><label for="id_f2">F2:</label> <input id="id_f2" maxlength="30" name="f2" type="text" /></li>'
+ '<li><label for="id_f1">F1:</label> <input id="id_f1" maxlength="30" name="f1" type="text"></li>'
+ '<li><label for="id_f2">F2:</label> <input id="id_f2" maxlength="30" name="f2" type="text"></li>'
'<li><label for="id_f3">F3:</label> <textarea cols="40" id="id_f3" name="f3" rows="10">'
'</textarea></li>'
'<li><label for="id_f4">F4:</label> <select id="id_f4" name="f4">'
@@ -3599,9 +3599,9 @@ Good luck picking a username that doesn&#39;t already exist.</p>
self.assertHTMLEqual(
form.as_table(),
'<tr><th><label for="id_f1">F1:</label></th>'
- '<td><input id="id_f1" maxlength="30" name="f1" type="text" /></td></tr>'
+ '<td><input id="id_f1" maxlength="30" name="f1" type="text"></td></tr>'
'<tr><th><label for="id_f2">F2:</label></th>'
- '<td><input id="id_f2" maxlength="30" name="f2" type="text" /></td></tr>'
+ '<td><input id="id_f2" maxlength="30" name="f2" type="text"></td></tr>'
'<tr><th><label for="id_f3">F3:</label></th><td><textarea cols="40" id="id_f3" name="f3" rows="10">'
'</textarea></td></tr>'
'<tr><th><label for="id_f4">F4:</label></th><td><select id="id_f4" name="f4">'
@@ -3620,13 +3620,13 @@ Good luck picking a username that doesn&#39;t already exist.</p>
f.as_p(),
'<ul class="errorlist nonfield">'
'<li>(Hidden field data) This field is required.</li></ul>\n<p> '
- '<input type="hidden" name="data" id="id_data" /></p>'
+ '<input type="hidden" name="data" id="id_data"></p>'
)
self.assertHTMLEqual(
f.as_table(),
'<tr><td colspan="2"><ul class="errorlist nonfield">'
'<li>(Hidden field data) This field is required.</li></ul>'
- '<input type="hidden" name="data" id="id_data" /></td></tr>'
+ '<input type="hidden" name="data" id="id_data"></td></tr>'
)
def test_field_named_data(self):
diff --git a/tests/forms_tests/tests/test_formsets.py b/tests/forms_tests/tests/test_formsets.py
index 6e8ca01261..7d06104791 100644
--- a/tests/forms_tests/tests/test_formsets.py
+++ b/tests/forms_tests/tests/test_formsets.py
@@ -87,12 +87,12 @@ class FormsFormsetTestCase(SimpleTestCase):
formset = self.make_choiceformset()
self.assertHTMLEqual(
str(formset),
- """<input type="hidden" name="choices-TOTAL_FORMS" value="1" />
-<input type="hidden" name="choices-INITIAL_FORMS" value="0" />
-<input type="hidden" name="choices-MIN_NUM_FORMS" value="0" />
-<input type="hidden" name="choices-MAX_NUM_FORMS" value="1000" />
-<tr><th>Choice:</th><td><input type="text" name="choices-0-choice" /></td></tr>
-<tr><th>Votes:</th><td><input type="number" name="choices-0-votes" /></td></tr>"""
+ """<input type="hidden" name="choices-TOTAL_FORMS" value="1">
+<input type="hidden" name="choices-INITIAL_FORMS" value="0">
+<input type="hidden" name="choices-MIN_NUM_FORMS" value="0">
+<input type="hidden" name="choices-MAX_NUM_FORMS" value="1000">
+<tr><th>Choice:</th><td><input type="text" name="choices-0-choice"></td></tr>
+<tr><th>Votes:</th><td><input type="number" name="choices-0-votes"></td></tr>"""
)
# FormSet are treated similarly to Forms. FormSet has an is_valid()
# method, and a cleaned_data or errors attribute depending on whether
@@ -199,10 +199,10 @@ class FormsFormsetTestCase(SimpleTestCase):
form_output.append(form.as_ul())
self.assertHTMLEqual(
'\n'.join(form_output),
- """<li>Choice: <input type="text" name="choices-0-choice" value="Calexico" /></li>
-<li>Votes: <input type="number" name="choices-0-votes" value="100" /></li>
-<li>Choice: <input type="text" name="choices-1-choice" /></li>
-<li>Votes: <input type="number" name="choices-1-votes" /></li>"""
+ """<li>Choice: <input type="text" name="choices-0-choice" value="Calexico"></li>
+<li>Votes: <input type="number" name="choices-0-votes" value="100"></li>
+<li>Choice: <input type="text" name="choices-1-choice"></li>
+<li>Votes: <input type="number" name="choices-1-votes"></li>"""
)
def test_blank_form_unfilled(self):
@@ -244,12 +244,12 @@ class FormsFormsetTestCase(SimpleTestCase):
form_output.append(form.as_ul())
self.assertHTMLEqual(
'\n'.join(form_output),
- """<li>Choice: <input type="text" name="choices-0-choice" /></li>
-<li>Votes: <input type="number" name="choices-0-votes" /></li>
-<li>Choice: <input type="text" name="choices-1-choice" /></li>
-<li>Votes: <input type="number" name="choices-1-votes" /></li>
-<li>Choice: <input type="text" name="choices-2-choice" /></li>
-<li>Votes: <input type="number" name="choices-2-votes" /></li>"""
+ """<li>Choice: <input type="text" name="choices-0-choice"></li>
+<li>Votes: <input type="number" name="choices-0-votes"></li>
+<li>Choice: <input type="text" name="choices-1-choice"></li>
+<li>Votes: <input type="number" name="choices-1-votes"></li>
+<li>Choice: <input type="text" name="choices-2-choice"></li>
+<li>Votes: <input type="number" name="choices-2-votes"></li>"""
)
# Since every form was displayed as blank, they are also accepted as
# blank. This may seem a little strange, but min_num is used to require
@@ -285,10 +285,10 @@ class FormsFormsetTestCase(SimpleTestCase):
self.assertTrue(formset.forms[1].empty_permitted)
self.assertHTMLEqual(
'\n'.join(form_output),
- """<li>Choice: <input type="text" name="choices-0-choice" /></li>
-<li>Votes: <input type="number" name="choices-0-votes" /></li>
-<li>Choice: <input type="text" name="choices-1-choice" /></li>
-<li>Votes: <input type="number" name="choices-1-votes" /></li>"""
+ """<li>Choice: <input type="text" name="choices-0-choice"></li>
+<li>Votes: <input type="number" name="choices-0-votes"></li>
+<li>Choice: <input type="text" name="choices-1-choice"></li>
+<li>Votes: <input type="number" name="choices-1-votes"></li>"""
)
def test_min_num_displaying_more_than_one_blank_form_with_zero_extra(self):
@@ -300,12 +300,12 @@ class FormsFormsetTestCase(SimpleTestCase):
form_output.append(form.as_ul())
self.assertHTMLEqual(
'\n'.join(form_output),
- """<li>Choice: <input type="text" name="choices-0-choice" /></li>
-<li>Votes: <input type="number" name="choices-0-votes" /></li>
-<li>Choice: <input type="text" name="choices-1-choice" /></li>
-<li>Votes: <input type="number" name="choices-1-votes" /></li>
-<li>Choice: <input type="text" name="choices-2-choice" /></li>
-<li>Votes: <input type="number" name="choices-2-votes" /></li>"""
+ """<li>Choice: <input type="text" name="choices-0-choice"></li>
+<li>Votes: <input type="number" name="choices-0-votes"></li>
+<li>Choice: <input type="text" name="choices-1-choice"></li>
+<li>Votes: <input type="number" name="choices-1-votes"></li>
+<li>Choice: <input type="text" name="choices-2-choice"></li>
+<li>Votes: <input type="number" name="choices-2-votes"></li>"""
)
def test_single_form_completed(self):
@@ -439,21 +439,21 @@ class FormsFormsetTestCase(SimpleTestCase):
form_output.append(form.as_ul())
self.assertHTMLEqual(
'\n'.join(form_output),
- """<li>Choice: <input type="text" name="choices-0-choice" value="Calexico" /></li>
-<li>Votes: <input type="number" name="choices-0-votes" value="100" /></li>
-<li>Choice: <input type="text" name="choices-1-choice" /></li>
-<li>Votes: <input type="number" name="choices-1-votes" /></li>
-<li>Choice: <input type="text" name="choices-2-choice" /></li>
-<li>Votes: <input type="number" name="choices-2-votes" /></li>
-<li>Choice: <input type="text" name="choices-3-choice" /></li>
-<li>Votes: <input type="number" name="choices-3-votes" /></li>"""
+ """<li>Choice: <input type="text" name="choices-0-choice" value="Calexico"></li>
+<li>Votes: <input type="number" name="choices-0-votes" value="100"></li>
+<li>Choice: <input type="text" name="choices-1-choice"></li>
+<li>Votes: <input type="number" name="choices-1-votes"></li>
+<li>Choice: <input type="text" name="choices-2-choice"></li>
+<li>Votes: <input type="number" name="choices-2-votes"></li>
+<li>Choice: <input type="text" name="choices-3-choice"></li>
+<li>Votes: <input type="number" name="choices-3-votes"></li>"""
)
# Retrieving an empty form works. Tt shows up in the form list.
self.assertTrue(formset.empty_form.empty_permitted)
self.assertHTMLEqual(
formset.empty_form.as_ul(),
- """<li>Choice: <input type="text" name="choices-__prefix__-choice" /></li>
-<li>Votes: <input type="number" name="choices-__prefix__-votes" /></li>"""
+ """<li>Choice: <input type="text" name="choices-__prefix__-choice"></li>
+<li>Votes: <input type="number" name="choices-__prefix__-votes"></li>"""
)
def test_formset_with_deletion(self):
@@ -470,15 +470,15 @@ class FormsFormsetTestCase(SimpleTestCase):
form_output.append(form.as_ul())
self.assertHTMLEqual(
'\n'.join(form_output),
- """<li>Choice: <input type="text" name="choices-0-choice" value="Calexico" /></li>
-<li>Votes: <input type="number" name="choices-0-votes" value="100" /></li>
-<li>Delete: <input type="checkbox" name="choices-0-DELETE" /></li>
-<li>Choice: <input type="text" name="choices-1-choice" value="Fergie" /></li>
-<li>Votes: <input type="number" name="choices-1-votes" value="900" /></li>
-<li>Delete: <input type="checkbox" name="choices-1-DELETE" /></li>
-<li>Choice: <input type="text" name="choices-2-choice" /></li>
-<li>Votes: <input type="number" name="choices-2-votes" /></li>
-<li>Delete: <input type="checkbox" name="choices-2-DELETE" /></li>"""
+ """<li>Choice: <input type="text" name="choices-0-choice" value="Calexico"></li>
+<li>Votes: <input type="number" name="choices-0-votes" value="100"></li>
+<li>Delete: <input type="checkbox" name="choices-0-DELETE"></li>
+<li>Choice: <input type="text" name="choices-1-choice" value="Fergie"></li>
+<li>Votes: <input type="number" name="choices-1-votes" value="900"></li>
+<li>Delete: <input type="checkbox" name="choices-1-DELETE"></li>
+<li>Choice: <input type="text" name="choices-2-choice"></li>
+<li>Votes: <input type="number" name="choices-2-votes"></li>
+<li>Delete: <input type="checkbox" name="choices-2-DELETE"></li>"""
)
# To delete something, set that form's special delete field to 'on'.
# Let's go ahead and delete Fergie.
@@ -580,15 +580,15 @@ class FormsFormsetTestCase(SimpleTestCase):
form_output.append(form.as_ul())
self.assertHTMLEqual(
'\n'.join(form_output),
- """<li>Choice: <input type="text" name="choices-0-choice" value="Calexico" /></li>
-<li>Votes: <input type="number" name="choices-0-votes" value="100" /></li>
-<li>Order: <input type="number" name="choices-0-ORDER" value="1" /></li>
-<li>Choice: <input type="text" name="choices-1-choice" value="Fergie" /></li>
-<li>Votes: <input type="number" name="choices-1-votes" value="900" /></li>
-<li>Order: <input type="number" name="choices-1-ORDER" value="2" /></li>
-<li>Choice: <input type="text" name="choices-2-choice" /></li>
-<li>Votes: <input type="number" name="choices-2-votes" /></li>
-<li>Order: <input type="number" name="choices-2-ORDER" /></li>"""
+ """<li>Choice: <input type="text" name="choices-0-choice" value="Calexico"></li>
+<li>Votes: <input type="number" name="choices-0-votes" value="100"></li>
+<li>Order: <input type="number" name="choices-0-ORDER" value="1"></li>
+<li>Choice: <input type="text" name="choices-1-choice" value="Fergie"></li>
+<li>Votes: <input type="number" name="choices-1-votes" value="900"></li>
+<li>Order: <input type="number" name="choices-1-ORDER" value="2"></li>
+<li>Choice: <input type="text" name="choices-2-choice"></li>
+<li>Votes: <input type="number" name="choices-2-votes"></li>
+<li>Order: <input type="number" name="choices-2-ORDER"></li>"""
)
data = {
'choices-TOTAL_FORMS': '3', # the number of forms rendered
@@ -684,22 +684,22 @@ class FormsFormsetTestCase(SimpleTestCase):
form_output.append(form.as_ul())
self.assertHTMLEqual(
'\n'.join(form_output),
- """<li>Choice: <input type="text" name="choices-0-choice" value="Calexico" /></li>
-<li>Votes: <input type="number" name="choices-0-votes" value="100" /></li>
-<li>Order: <input type="number" name="choices-0-ORDER" value="1" /></li>
-<li>Delete: <input type="checkbox" name="choices-0-DELETE" /></li>
-<li>Choice: <input type="text" name="choices-1-choice" value="Fergie" /></li>
-<li>Votes: <input type="number" name="choices-1-votes" value="900" /></li>
-<li>Order: <input type="number" name="choices-1-ORDER" value="2" /></li>
-<li>Delete: <input type="checkbox" name="choices-1-DELETE" /></li>
-<li>Choice: <input type="text" name="choices-2-choice" value="The Decemberists" /></li>
-<li>Votes: <input type="number" name="choices-2-votes" value="500" /></li>
-<li>Order: <input type="number" name="choices-2-ORDER" value="3" /></li>
-<li>Delete: <input type="checkbox" name="choices-2-DELETE" /></li>
-<li>Choice: <input type="text" name="choices-3-choice" /></li>
-<li>Votes: <input type="number" name="choices-3-votes" /></li>
-<li>Order: <input type="number" name="choices-3-ORDER" /></li>
-<li>Delete: <input type="checkbox" name="choices-3-DELETE" /></li>"""
+ """<li>Choice: <input type="text" name="choices-0-choice" value="Calexico"></li>
+<li>Votes: <input type="number" name="choices-0-votes" value="100"></li>
+<li>Order: <input type="number" name="choices-0-ORDER" value="1"></li>
+<li>Delete: <input type="checkbox" name="choices-0-DELETE"></li>
+<li>Choice: <input type="text" name="choices-1-choice" value="Fergie"></li>
+<li>Votes: <input type="number" name="choices-1-votes" value="900"></li>
+<li>Order: <input type="number" name="choices-1-ORDER" value="2"></li>
+<li>Delete: <input type="checkbox" name="choices-1-DELETE"></li>
+<li>Choice: <input type="text" name="choices-2-choice" value="The Decemberists"></li>
+<li>Votes: <input type="number" name="choices-2-votes" value="500"></li>
+<li>Order: <input type="number" name="choices-2-ORDER" value="3"></li>
+<li>Delete: <input type="checkbox" name="choices-2-DELETE"></li>
+<li>Choice: <input type="text" name="choices-3-choice"></li>
+<li>Votes: <input type="number" name="choices-3-votes"></li>
+<li>Order: <input type="number" name="choices-3-ORDER"></li>
+<li>Delete: <input type="checkbox" name="choices-3-DELETE"></li>"""
)
# Let's delete Fergie, and put The Decemberists ahead of Calexico.
data = {
@@ -803,11 +803,11 @@ class FormsFormsetTestCase(SimpleTestCase):
self.assertHTMLEqual(
'\n'.join(form_output),
"""<tr><th><label for="id_form-0-name">Name:</label></th>
-<td><input type="text" name="form-0-name" id="id_form-0-name" /></td></tr>
+<td><input type="text" name="form-0-name" id="id_form-0-name"></td></tr>
<tr><th><label for="id_form-1-name">Name:</label></th>
-<td><input type="text" name="form-1-name" id="id_form-1-name" /></td></tr>
+<td><input type="text" name="form-1-name" id="id_form-1-name"></td></tr>
<tr><th><label for="id_form-2-name">Name:</label></th>
-<td><input type="text" name="form-2-name" id="id_form-2-name" /></td></tr>"""
+<td><input type="text" name="form-2-name" id="id_form-2-name"></td></tr>"""
)
# If max_num is 0 then no form is rendered at all.
LimitedFavoriteDrinkFormSet = formset_factory(FavoriteDrinkForm, extra=3, max_num=0)
@@ -826,9 +826,9 @@ class FormsFormsetTestCase(SimpleTestCase):
self.assertHTMLEqual(
'\n'.join(form_output),
"""<tr><th><label for="id_form-0-name">Name:</label></th><td>
-<input type="text" name="form-0-name" id="id_form-0-name" /></td></tr>
+<input type="text" name="form-0-name" id="id_form-0-name"></td></tr>
<tr><th><label for="id_form-1-name">Name:</label></th>
-<td><input type="text" name="form-1-name" id="id_form-1-name" /></td></tr>"""
+<td><input type="text" name="form-1-name" id="id_form-1-name"></td></tr>"""
)
def test_limiting_extra_lest_than_max_num(self):
@@ -841,7 +841,7 @@ class FormsFormsetTestCase(SimpleTestCase):
self.assertHTMLEqual(
'\n'.join(form_output),
"""<tr><th><label for="id_form-0-name">Name:</label></th>
-<td><input type="text" name="form-0-name" id="id_form-0-name" /></td></tr>"""
+<td><input type="text" name="form-0-name" id="id_form-0-name"></td></tr>"""
)
def test_max_num_with_initial_data(self):
@@ -860,9 +860,9 @@ class FormsFormsetTestCase(SimpleTestCase):
self.assertHTMLEqual(
'\n'.join(form_output),
"""<tr><th><label for="id_form-0-name">Name:</label></th>
-<td><input type="text" name="form-0-name" value="Fernet and Coke" id="id_form-0-name" /></td></tr>
+<td><input type="text" name="form-0-name" value="Fernet and Coke" id="id_form-0-name"></td></tr>
<tr><th><label for="id_form-1-name">Name:</label></th>
-<td><input type="text" name="form-1-name" id="id_form-1-name" /></td></tr>"""
+<td><input type="text" name="form-1-name" id="id_form-1-name"></td></tr>"""
)
def test_max_num_zero(self):
@@ -891,9 +891,9 @@ class FormsFormsetTestCase(SimpleTestCase):
self.assertHTMLEqual(
'\n'.join(form_output),
"""<tr><th><label for="id_form-0-name">Name:</label></th>
-<td><input id="id_form-0-name" name="form-0-name" type="text" value="Fernet and Coke" /></td></tr>
+<td><input id="id_form-0-name" name="form-0-name" type="text" value="Fernet and Coke"></td></tr>
<tr><th><label for="id_form-1-name">Name:</label></th>
-<td><input id="id_form-1-name" name="form-1-name" type="text" value="Bloody Mary" /></td></tr>"""
+<td><input id="id_form-1-name" name="form-1-name" type="text" value="Bloody Mary"></td></tr>"""
)
def test_more_initial_than_max_num(self):
@@ -914,11 +914,11 @@ class FormsFormsetTestCase(SimpleTestCase):
self.assertHTMLEqual(
'\n'.join(form_output),
"""<tr><th><label for="id_form-0-name">Name:</label></th>
-<td><input id="id_form-0-name" name="form-0-name" type="text" value="Gin Tonic" /></td></tr>
+<td><input id="id_form-0-name" name="form-0-name" type="text" value="Gin Tonic"></td></tr>
<tr><th><label for="id_form-1-name">Name:</label></th>
-<td><input id="id_form-1-name" name="form-1-name" type="text" value="Bloody Mary" /></td></tr>
+<td><input id="id_form-1-name" name="form-1-name" type="text" value="Bloody Mary"></td></tr>
<tr><th><label for="id_form-2-name">Name:</label></th>
-<td><input id="id_form-2-name" name="form-2-name" type="text" value="Jack and Coke" /></td></tr>"""
+<td><input id="id_form-2-name" name="form-2-name" type="text" value="Jack and Coke"></td></tr>"""
)
def test_more_initial_form_result_in_one(self):
@@ -937,9 +937,9 @@ class FormsFormsetTestCase(SimpleTestCase):
self.assertHTMLEqual(
'\n'.join(form_output),
"""<tr><th><label for="id_form-0-name">Name:</label></th>
-<td><input type="text" name="form-0-name" value="Gin Tonic" id="id_form-0-name" /></td></tr>
+<td><input type="text" name="form-0-name" value="Gin Tonic" id="id_form-0-name"></td></tr>
<tr><th><label for="id_form-1-name">Name:</label></th>
-<td><input type="text" name="form-1-name" id="id_form-1-name" /></td></tr>"""
+<td><input type="text" name="form-1-name" id="id_form-1-name"></td></tr>"""
)
def test_management_form_prefix(self):
@@ -1195,36 +1195,36 @@ class FormsetAsFooTests(SimpleTestCase):
formset = ChoiceFormSet(data, auto_id=False, prefix='choices')
self.assertHTMLEqual(
formset.as_table(),
- """<input type="hidden" name="choices-TOTAL_FORMS" value="1" />
-<input type="hidden" name="choices-INITIAL_FORMS" value="0" />
-<input type="hidden" name="choices-MIN_NUM_FORMS" value="0" />
-<input type="hidden" name="choices-MAX_NUM_FORMS" value="0" />
-<tr><th>Choice:</th><td><input type="text" name="choices-0-choice" value="Calexico" /></td></tr>
-<tr><th>Votes:</th><td><input type="number" name="choices-0-votes" value="100" /></td></tr>"""
+ """<input type="hidden" name="choices-TOTAL_FORMS" value="1">
+<input type="hidden" name="choices-INITIAL_FORMS" value="0">
+<input type="hidden" name="choices-MIN_NUM_FORMS" value="0">
+<input type="hidden" name="choices-MAX_NUM_FORMS" value="0">
+<tr><th>Choice:</th><td><input type="text" name="choices-0-choice" value="Calexico"></td></tr>
+<tr><th>Votes:</th><td><input type="number" name="choices-0-votes" value="100"></td></tr>"""
)
def test_as_p(self):
formset = ChoiceFormSet(data, auto_id=False, prefix='choices')
self.assertHTMLEqual(
formset.as_p(),
- """<input type="hidden" name="choices-TOTAL_FORMS" value="1" />
-<input type="hidden" name="choices-INITIAL_FORMS" value="0" />
-<input type="hidden" name="choices-MIN_NUM_FORMS" value="0" />
-<input type="hidden" name="choices-MAX_NUM_FORMS" value="0" />
-<p>Choice: <input type="text" name="choices-0-choice" value="Calexico" /></p>
-<p>Votes: <input type="number" name="choices-0-votes" value="100" /></p>"""
+ """<input type="hidden" name="choices-TOTAL_FORMS" value="1">
+<input type="hidden" name="choices-INITIAL_FORMS" value="0">
+<input type="hidden" name="choices-MIN_NUM_FORMS" value="0">
+<input type="hidden" name="choices-MAX_NUM_FORMS" value="0">
+<p>Choice: <input type="text" name="choices-0-choice" value="Calexico"></p>
+<p>Votes: <input type="number" name="choices-0-votes" value="100"></p>"""
)
def test_as_ul(self):
formset = ChoiceFormSet(data, auto_id=False, prefix='choices')
self.assertHTMLEqual(
formset.as_ul(),
- """<input type="hidden" name="choices-TOTAL_FORMS" value="1" />
-<input type="hidden" name="choices-INITIAL_FORMS" value="0" />
-<input type="hidden" name="choices-MIN_NUM_FORMS" value="0" />
-<input type="hidden" name="choices-MAX_NUM_FORMS" value="0" />
-<li>Choice: <input type="text" name="choices-0-choice" value="Calexico" /></li>
-<li>Votes: <input type="number" name="choices-0-votes" value="100" /></li>"""
+ """<input type="hidden" name="choices-TOTAL_FORMS" value="1">
+<input type="hidden" name="choices-INITIAL_FORMS" value="0">
+<input type="hidden" name="choices-MIN_NUM_FORMS" value="0">
+<input type="hidden" name="choices-MAX_NUM_FORMS" value="0">
+<li>Choice: <input type="text" name="choices-0-choice" value="Calexico"></li>
+<li>Votes: <input type="number" name="choices-0-votes" value="100"></li>"""
)
diff --git a/tests/forms_tests/tests/test_i18n.py b/tests/forms_tests/tests/test_i18n.py
index 73d5b270eb..be166514bf 100644
--- a/tests/forms_tests/tests/test_i18n.py
+++ b/tests/forms_tests/tests/test_i18n.py
@@ -15,7 +15,7 @@ class FormsI18nTests(SimpleTestCase):
self.assertHTMLEqual(
f.as_p(),
'<p><label for="id_username">username:</label>'
- '<input id="id_username" type="text" name="username" maxlength="10" required /></p>'
+ '<input id="id_username" type="text" name="username" maxlength="10" required></p>'
)
# Translations are done at rendering time, so multi-lingual apps can define forms)
@@ -23,13 +23,13 @@ class FormsI18nTests(SimpleTestCase):
self.assertHTMLEqual(
f.as_p(),
'<p><label for="id_username">Benutzername:</label>'
- '<input id="id_username" type="text" name="username" maxlength="10" required /></p>'
+ '<input id="id_username" type="text" name="username" maxlength="10" required></p>'
)
with translation.override('pl'):
self.assertHTMLEqual(
f.as_p(),
'<p><label for="id_username">u\u017cytkownik:</label>'
- '<input id="id_username" type="text" name="username" maxlength="10" required /></p>'
+ '<input id="id_username" type="text" name="username" maxlength="10" required></p>'
)
def test_non_ascii_label(self):
@@ -59,12 +59,12 @@ class FormsI18nTests(SimpleTestCase):
'<p><label for="id_somechoice_0">\xc5\xf8\xdf:</label>'
'<ul id="id_somechoice">\n'
'<li><label for="id_somechoice_0">'
- '<input type="radio" id="id_somechoice_0" value="\xc5" name="somechoice" required /> '
+ '<input type="radio" id="id_somechoice_0" value="\xc5" name="somechoice" required> '
'En tied\xe4</label></li>\n'
'<li><label for="id_somechoice_1">'
- '<input type="radio" id="id_somechoice_1" value="\xf8" name="somechoice" required /> '
+ '<input type="radio" id="id_somechoice_1" value="\xf8" name="somechoice" required> '
'Mies</label></li>\n<li><label for="id_somechoice_2">'
- '<input type="radio" id="id_somechoice_2" value="\xdf" name="somechoice" required /> '
+ '<input type="radio" id="id_somechoice_2" value="\xdf" name="somechoice" required> '
'Nainen</label></li>\n</ul></p>'
)
@@ -78,12 +78,12 @@ class FormsI18nTests(SimpleTestCase):
'\u043d\u043e\u0435 \u043f\u043e\u043b\u0435.</li></ul>\n'
'<p><label for="id_somechoice_0">\xc5\xf8\xdf:</label>'
' <ul id="id_somechoice">\n<li><label for="id_somechoice_0">'
- '<input type="radio" id="id_somechoice_0" value="\xc5" name="somechoice" required /> '
+ '<input type="radio" id="id_somechoice_0" value="\xc5" name="somechoice" required> '
'En tied\xe4</label></li>\n'
'<li><label for="id_somechoice_1">'
- '<input type="radio" id="id_somechoice_1" value="\xf8" name="somechoice" required /> '
+ '<input type="radio" id="id_somechoice_1" value="\xf8" name="somechoice" required> '
'Mies</label></li>\n<li><label for="id_somechoice_2">'
- '<input type="radio" id="id_somechoice_2" value="\xdf" name="somechoice" required /> '
+ '<input type="radio" id="id_somechoice_2" value="\xdf" name="somechoice" required> '
'Nainen</label></li>\n</ul></p>'
)
diff --git a/tests/forms_tests/tests/test_media.py b/tests/forms_tests/tests/test_media.py
index 2b73a041be..9798fc027b 100644
--- a/tests/forms_tests/tests/test_media.py
+++ b/tests/forms_tests/tests/test_media.py
@@ -19,8 +19,8 @@ class FormsMediaTestCase(SimpleTestCase):
)
self.assertEqual(
str(m),
- """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" />
-<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" />
+ """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet">
+<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="/path/to/js1"></script>
<script type="text/javascript" src="http://media.other.com/path/to/js2"></script>
<script type="text/javascript" src="https://secure.other.com/path/to/js3"></script>"""
@@ -40,8 +40,8 @@ class FormsMediaTestCase(SimpleTestCase):
m3 = Media(Foo)
self.assertEqual(
str(m3),
- """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" />
-<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" />
+ """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet">
+<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="/path/to/js1"></script>
<script type="text/javascript" src="http://media.other.com/path/to/js2"></script>
<script type="text/javascript" src="https://secure.other.com/path/to/js3"></script>"""
@@ -72,8 +72,8 @@ class FormsMediaTestCase(SimpleTestCase):
w1 = MyWidget1()
self.assertEqual(
str(w1.media),
- """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" />
-<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" />
+ """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet">
+<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="/path/to/js1"></script>
<script type="text/javascript" src="http://media.other.com/path/to/js2"></script>
<script type="text/javascript" src="https://secure.other.com/path/to/js3"></script>"""
@@ -82,8 +82,8 @@ class FormsMediaTestCase(SimpleTestCase):
# Media objects can be interrogated by media type
self.assertEqual(
str(w1.media['css']),
- """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" />
-<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" />"""
+ """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet">
+<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet">"""
)
self.assertEqual(
@@ -122,9 +122,9 @@ class FormsMediaTestCase(SimpleTestCase):
w3 = MyWidget3()
self.assertEqual(
str(w1.media + w2.media + w3.media),
- """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" />
-<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" />
-<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet" />
+ """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet">
+<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet">
+<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="/path/to/js1"></script>
<script type="text/javascript" src="http://media.other.com/path/to/js2"></script>
<script type="text/javascript" src="https://secure.other.com/path/to/js3"></script>
@@ -134,8 +134,8 @@ class FormsMediaTestCase(SimpleTestCase):
# media addition hasn't affected the original objects
self.assertEqual(
str(w1.media),
- """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" />
-<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" />
+ """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet">
+<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="/path/to/js1"></script>
<script type="text/javascript" src="http://media.other.com/path/to/js2"></script>
<script type="text/javascript" src="https://secure.other.com/path/to/js3"></script>"""
@@ -150,7 +150,7 @@ class FormsMediaTestCase(SimpleTestCase):
js = ('/path/to/js1', '/path/to/js1')
w4 = MyWidget4()
- self.assertEqual(str(w4.media), """<link href="/path/to/css1" type="text/css" media="all" rel="stylesheet" />
+ self.assertEqual(str(w4.media), """<link href="/path/to/css1" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="/path/to/js1"></script>""")
def test_media_property(self):
@@ -165,7 +165,7 @@ class FormsMediaTestCase(SimpleTestCase):
media = property(_media)
w4 = MyWidget4()
- self.assertEqual(str(w4.media), """<link href="/some/path" type="text/css" media="all" rel="stylesheet" />
+ self.assertEqual(str(w4.media), """<link href="/some/path" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="/some/js"></script>""")
# Media properties can reference the media of their parents
@@ -175,8 +175,8 @@ class FormsMediaTestCase(SimpleTestCase):
media = property(_media)
w5 = MyWidget5()
- self.assertEqual(str(w5.media), """<link href="/some/path" type="text/css" media="all" rel="stylesheet" />
-<link href="/other/path" type="text/css" media="all" rel="stylesheet" />
+ self.assertEqual(str(w5.media), """<link href="/some/path" type="text/css" media="all" rel="stylesheet">
+<link href="/other/path" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="/some/js"></script>
<script type="text/javascript" src="/other/js"></script>""")
@@ -198,9 +198,9 @@ class FormsMediaTestCase(SimpleTestCase):
w6 = MyWidget6()
self.assertEqual(
str(w6.media),
- """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" />
-<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" />
-<link href="/other/path" type="text/css" media="all" rel="stylesheet" />
+ """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet">
+<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet">
+<link href="/other/path" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="/path/to/js1"></script>
<script type="text/javascript" src="http://media.other.com/path/to/js2"></script>
<script type="text/javascript" src="https://secure.other.com/path/to/js3"></script>
@@ -226,8 +226,8 @@ class FormsMediaTestCase(SimpleTestCase):
w7 = MyWidget7()
self.assertEqual(
str(w7.media),
- """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" />
-<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" />
+ """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet">
+<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="/path/to/js1"></script>
<script type="text/javascript" src="http://media.other.com/path/to/js2"></script>
<script type="text/javascript" src="https://secure.other.com/path/to/js3"></script>"""
@@ -244,9 +244,9 @@ class FormsMediaTestCase(SimpleTestCase):
w8 = MyWidget8()
self.assertEqual(
str(w8.media),
- """<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet" />
-<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" />
-<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" />
+ """<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet">
+<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet">
+<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="/path/to/js1"></script>
<script type="text/javascript" src="http://media.other.com/path/to/js2"></script>
<script type="text/javascript" src="https://secure.other.com/path/to/js3"></script>
@@ -278,8 +278,8 @@ class FormsMediaTestCase(SimpleTestCase):
w9 = MyWidget9()
self.assertEqual(
str(w9.media),
- """<link href="/some/path" type="text/css" media="all" rel="stylesheet" />
-<link href="/other/path" type="text/css" media="all" rel="stylesheet" />
+ """<link href="/some/path" type="text/css" media="all" rel="stylesheet">
+<link href="/other/path" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="/some/js"></script>
<script type="text/javascript" src="/other/js"></script>"""
)
@@ -294,8 +294,8 @@ class FormsMediaTestCase(SimpleTestCase):
js = ('/path/to/js1', '/path/to/js4')
w10 = MyWidget10()
- self.assertEqual(str(w10.media), """<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet" />
-<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" />
+ self.assertEqual(str(w10.media), """<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet">
+<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="/path/to/js1"></script>
<script type="text/javascript" src="/path/to/js4"></script>""")
@@ -319,9 +319,9 @@ class FormsMediaTestCase(SimpleTestCase):
w11 = MyWidget11()
self.assertEqual(
str(w11.media),
- """<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet" />
-<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" />
-<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" />
+ """<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet">
+<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet">
+<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="/path/to/js1"></script>
<script type="text/javascript" src="http://media.other.com/path/to/js2"></script>
<script type="text/javascript" src="https://secure.other.com/path/to/js3"></script>
@@ -348,9 +348,9 @@ class FormsMediaTestCase(SimpleTestCase):
w12 = MyWidget12()
self.assertEqual(
str(w12.media),
- """<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet" />
-<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" />
-<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" />
+ """<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet">
+<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet">
+<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="/path/to/js1"></script>
<script type="text/javascript" src="/path/to/js4"></script>"""
)
@@ -373,10 +373,10 @@ class FormsMediaTestCase(SimpleTestCase):
multimedia = MultimediaWidget()
self.assertEqual(
str(multimedia.media),
- """<link href="/file4" type="text/css" media="print" rel="stylesheet" />
-<link href="/file3" type="text/css" media="screen" rel="stylesheet" />
-<link href="/file1" type="text/css" media="screen, print" rel="stylesheet" />
-<link href="/file2" type="text/css" media="screen, print" rel="stylesheet" />
+ """<link href="/file4" type="text/css" media="print" rel="stylesheet">
+<link href="/file3" type="text/css" media="screen" rel="stylesheet">
+<link href="/file1" type="text/css" media="screen, print" rel="stylesheet">
+<link href="/file2" type="text/css" media="screen, print" rel="stylesheet">
<script type="text/javascript" src="/path/to/js1"></script>
<script type="text/javascript" src="/path/to/js4"></script>"""
)
@@ -417,9 +417,9 @@ class FormsMediaTestCase(SimpleTestCase):
mymulti = MyMultiWidget()
self.assertEqual(
str(mymulti.media),
- """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" />
-<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" />
-<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet" />
+ """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet">
+<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet">
+<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="/path/to/js1"></script>
<script type="text/javascript" src="http://media.other.com/path/to/js2"></script>
<script type="text/javascript" src="https://secure.other.com/path/to/js3"></script>
@@ -459,9 +459,9 @@ class FormsMediaTestCase(SimpleTestCase):
f1 = MyForm()
self.assertEqual(
str(f1.media),
- """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" />
-<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" />
-<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet" />
+ """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet">
+<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet">
+<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="/path/to/js1"></script>
<script type="text/javascript" src="http://media.other.com/path/to/js2"></script>
<script type="text/javascript" src="https://secure.other.com/path/to/js3"></script>
@@ -474,9 +474,9 @@ class FormsMediaTestCase(SimpleTestCase):
f2 = AnotherForm()
self.assertEqual(
str(f1.media + f2.media),
- """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" />
-<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" />
-<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet" />
+ """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet">
+<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet">
+<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="/path/to/js1"></script>
<script type="text/javascript" src="http://media.other.com/path/to/js2"></script>
<script type="text/javascript" src="https://secure.other.com/path/to/js3"></script>
@@ -496,10 +496,10 @@ class FormsMediaTestCase(SimpleTestCase):
f3 = FormWithMedia()
self.assertEqual(
str(f3.media),
- """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" />
-<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" />
-<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet" />
-<link href="/some/form/css" type="text/css" media="all" rel="stylesheet" />
+ """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet">
+<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet">
+<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet">
+<link href="/some/form/css" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="/path/to/js1"></script>
<script type="text/javascript" src="http://media.other.com/path/to/js2"></script>
<script type="text/javascript" src="https://secure.other.com/path/to/js3"></script>
@@ -515,10 +515,10 @@ class FormsMediaTestCase(SimpleTestCase):
<script type="text/javascript" src="https://secure.other.com/path/to/js3"></script>
<script type="text/javascript" src="/path/to/js4"></script>
<script type="text/javascript" src="/some/form/javascript"></script>"""
- """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" />
-<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" />
-<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet" />
-<link href="/some/form/css" type="text/css" media="all" rel="stylesheet" />"""
+ """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet">
+<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet">
+<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet">
+<link href="/some/form/css" type="text/css" media="all" rel="stylesheet">"""
)
def test_html_safe(self):
diff --git a/tests/forms_tests/tests/tests.py b/tests/forms_tests/tests/tests.py
index bf0d588f53..841a1c6799 100644
--- a/tests/forms_tests/tests/tests.py
+++ b/tests/forms_tests/tests/tests.py
@@ -109,24 +109,24 @@ class ModelFormCallableModelDefault(TestCase):
<option value="1" selected>ChoiceOption 1</option>
<option value="2">ChoiceOption 2</option>
<option value="3">ChoiceOption 3</option>
-</select><input type="hidden" name="initial-choice" value="1" id="initial-id_choice" /></p>
+</select><input type="hidden" name="initial-choice" value="1" id="initial-id_choice"></p>
<p><label for="id_choice_int">Choice int:</label> <select name="choice_int" id="id_choice_int">
<option value="1" selected>ChoiceOption 1</option>
<option value="2">ChoiceOption 2</option>
<option value="3">ChoiceOption 3</option>
-</select><input type="hidden" name="initial-choice_int" value="1" id="initial-id_choice_int" /></p>
+</select><input type="hidden" name="initial-choice_int" value="1" id="initial-id_choice_int"></p>
<p><label for="id_multi_choice">Multi choice:</label>
<select multiple name="multi_choice" id="id_multi_choice" required>
<option value="1" selected>ChoiceOption 1</option>
<option value="2">ChoiceOption 2</option>
<option value="3">ChoiceOption 3</option>
-</select><input type="hidden" name="initial-multi_choice" value="1" id="initial-id_multi_choice_0" /></p>
+</select><input type="hidden" name="initial-multi_choice" value="1" id="initial-id_multi_choice_0"></p>
<p><label for="id_multi_choice_int">Multi choice int:</label>
<select multiple name="multi_choice_int" id="id_multi_choice_int" required>
<option value="1" selected>ChoiceOption 1</option>
<option value="2">ChoiceOption 2</option>
<option value="3">ChoiceOption 3</option>
-</select><input type="hidden" name="initial-multi_choice_int" value="1" id="initial-id_multi_choice_int_0" /></p>"""
+</select><input type="hidden" name="initial-multi_choice_int" value="1" id="initial-id_multi_choice_int_0"></p>"""
)
def test_initial_instance_value(self):
@@ -145,26 +145,26 @@ class ModelFormCallableModelDefault(TestCase):
<option value="1">ChoiceOption 1</option>
<option value="2" selected>ChoiceOption 2</option>
<option value="3">ChoiceOption 3</option>
-</select><input type="hidden" name="initial-choice" value="2" id="initial-id_choice" /></p>
+</select><input type="hidden" name="initial-choice" value="2" id="initial-id_choice"></p>
<p><label for="id_choice_int">Choice int:</label> <select name="choice_int" id="id_choice_int">
<option value="1">ChoiceOption 1</option>
<option value="2" selected>ChoiceOption 2</option>
<option value="3">ChoiceOption 3</option>
-</select><input type="hidden" name="initial-choice_int" value="2" id="initial-id_choice_int" /></p>
+</select><input type="hidden" name="initial-choice_int" value="2" id="initial-id_choice_int"></p>
<p><label for="id_multi_choice">Multi choice:</label>
<select multiple name="multi_choice" id="id_multi_choice" required>
<option value="1">ChoiceOption 1</option>
<option value="2" selected>ChoiceOption 2</option>
<option value="3" selected>ChoiceOption 3</option>
-</select><input type="hidden" name="initial-multi_choice" value="2" id="initial-id_multi_choice_0" />
-<input type="hidden" name="initial-multi_choice" value="3" id="initial-id_multi_choice_1" /></p>
+</select><input type="hidden" name="initial-multi_choice" value="2" id="initial-id_multi_choice_0">
+<input type="hidden" name="initial-multi_choice" value="3" id="initial-id_multi_choice_1"></p>
<p><label for="id_multi_choice_int">Multi choice int:</label>
<select multiple name="multi_choice_int" id="id_multi_choice_int" required>
<option value="1">ChoiceOption 1</option>
<option value="2" selected>ChoiceOption 2</option>
<option value="3" selected>ChoiceOption 3</option>
-</select><input type="hidden" name="initial-multi_choice_int" value="2" id="initial-id_multi_choice_int_0" />
-<input type="hidden" name="initial-multi_choice_int" value="3" id="initial-id_multi_choice_int_1" /></p>"""
+</select><input type="hidden" name="initial-multi_choice_int" value="2" id="initial-id_multi_choice_int_0">
+<input type="hidden" name="initial-multi_choice_int" value="3" id="initial-id_multi_choice_int_1"></p>"""
)
@@ -308,7 +308,7 @@ class EmptyLabelTestCase(TestCase):
f = EmptyCharLabelChoiceForm()
self.assertHTMLEqual(
f.as_p(),
- """<p><label for="id_name">Name:</label> <input id="id_name" maxlength="10" name="name" type="text" required /></p>
+ """<p><label for="id_name">Name:</label> <input id="id_name" maxlength="10" name="name" type="text" required></p>
<p><label for="id_choice">Choice:</label> <select id="id_choice" name="choice">
<option value="" selected>No Preference</option>
<option value="f">Foo</option>
@@ -320,7 +320,7 @@ class EmptyLabelTestCase(TestCase):
f = EmptyCharLabelNoneChoiceForm()
self.assertHTMLEqual(
f.as_p(),
- """<p><label for="id_name">Name:</label> <input id="id_name" maxlength="10" name="name" type="text" required /></p>
+ """<p><label for="id_name">Name:</label> <input id="id_name" maxlength="10" name="name" type="text" required></p>
<p><label for="id_choice_string_w_none">Choice string w none:</label>
<select id="id_choice_string_w_none" name="choice_string_w_none">
<option value="" selected>No Preference</option>
@@ -350,7 +350,7 @@ class EmptyLabelTestCase(TestCase):
f = EmptyIntegerLabelChoiceForm()
self.assertHTMLEqual(
f.as_p(),
- """<p><label for="id_name">Name:</label> <input id="id_name" maxlength="10" name="name" type="text" required /></p>
+ """<p><label for="id_name">Name:</label> <input id="id_name" maxlength="10" name="name" type="text" required></p>
<p><label for="id_choice_integer">Choice integer:</label>
<select id="id_choice_integer" name="choice_integer">
<option value="" selected>No Preference</option>
@@ -370,7 +370,7 @@ class EmptyLabelTestCase(TestCase):
self.assertHTMLEqual(
f.as_p(),
"""<p><label for="id_name">Name:</label>
-<input id="id_name" maxlength="10" name="name" type="text" value="none-test" required /></p>
+<input id="id_name" maxlength="10" name="name" type="text" value="none-test" required></p>
<p><label for="id_choice_integer">Choice integer:</label>
<select id="id_choice_integer" name="choice_integer">
<option value="" selected>No Preference</option>
@@ -384,7 +384,7 @@ class EmptyLabelTestCase(TestCase):
self.assertHTMLEqual(
f.as_p(),
"""<p><label for="id_name">Name:</label>
-<input id="id_name" maxlength="10" name="name" type="text" value="foo-test" required /></p>
+<input id="id_name" maxlength="10" name="name" type="text" value="foo-test" required></p>
<p><label for="id_choice_integer">Choice integer:</label>
<select id="id_choice_integer" name="choice_integer">
<option value="">No Preference</option>
diff --git a/tests/forms_tests/widget_tests/test_checkboxinput.py b/tests/forms_tests/widget_tests/test_checkboxinput.py
index 1ae6ab73b6..6483b7f211 100644
--- a/tests/forms_tests/widget_tests/test_checkboxinput.py
+++ b/tests/forms_tests/widget_tests/test_checkboxinput.py
@@ -7,18 +7,18 @@ class CheckboxInputTest(WidgetTest):
widget = CheckboxInput()
def test_render_empty(self):
- self.check_html(self.widget, 'is_cool', '', html='<input type="checkbox" name="is_cool" />')
+ self.check_html(self.widget, 'is_cool', '', html='<input type="checkbox" name="is_cool">')
def test_render_none(self):
- self.check_html(self.widget, 'is_cool', None, html='<input type="checkbox" name="is_cool" />')
+ self.check_html(self.widget, 'is_cool', None, html='<input type="checkbox" name="is_cool">')
def test_render_false(self):
- self.check_html(self.widget, 'is_cool', False, html='<input type="checkbox" name="is_cool" />')
+ self.check_html(self.widget, 'is_cool', False, html='<input type="checkbox" name="is_cool">')
def test_render_true(self):
self.check_html(
self.widget, 'is_cool', True,
- html='<input checked type="checkbox" name="is_cool" />'
+ html='<input checked type="checkbox" name="is_cool">'
)
def test_render_value(self):
@@ -28,7 +28,7 @@ class CheckboxInputTest(WidgetTest):
"""
self.check_html(
self.widget, 'is_cool', 'foo',
- html='<input checked type="checkbox" name="is_cool" value="foo" />',
+ html='<input checked type="checkbox" name="is_cool" value="foo">',
)
def test_render_int(self):
@@ -37,11 +37,11 @@ class CheckboxInputTest(WidgetTest):
"""
self.check_html(
self.widget, 'is_cool', 0,
- html='<input checked type="checkbox" name="is_cool" value="0" />',
+ html='<input checked type="checkbox" name="is_cool" value="0">',
)
self.check_html(
self.widget, 'is_cool', 1,
- html='<input checked type="checkbox" name="is_cool" value="1" />',
+ html='<input checked type="checkbox" name="is_cool" value="1">',
)
def test_render_check_test(self):
@@ -51,16 +51,16 @@ class CheckboxInputTest(WidgetTest):
"""
widget = CheckboxInput(check_test=lambda value: value.startswith('hello'))
self.check_html(widget, 'greeting', '', html=(
- '<input type="checkbox" name="greeting" />'
+ '<input type="checkbox" name="greeting">'
))
self.check_html(widget, 'greeting', 'hello', html=(
- '<input checked type="checkbox" name="greeting" value="hello" />'
+ '<input checked type="checkbox" name="greeting" value="hello">'
))
self.check_html(widget, 'greeting', 'hello there', html=(
- '<input checked type="checkbox" name="greeting" value="hello there" />'
+ '<input checked type="checkbox" name="greeting" value="hello there">'
))
self.check_html(widget, 'greeting', 'hello & goodbye', html=(
- '<input checked type="checkbox" name="greeting" value="hello &amp; goodbye" />'
+ '<input checked type="checkbox" name="greeting" value="hello &amp; goodbye">'
))
def test_render_check_exception(self):
diff --git a/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py b/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py
index 239f80da47..ef31ce9d36 100644
--- a/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py
+++ b/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py
@@ -13,20 +13,20 @@ class CheckboxSelectMultipleTest(WidgetTest):
def test_render_value(self):
self.check_html(self.widget(choices=self.beatles), 'beatles', ['J'], html=(
"""<ul>
- <li><label><input checked type="checkbox" name="beatles" value="J" /> John</label></li>
- <li><label><input type="checkbox" name="beatles" value="P" /> Paul</label></li>
- <li><label><input type="checkbox" name="beatles" value="G" /> George</label></li>
- <li><label><input type="checkbox" name="beatles" value="R" /> Ringo</label></li>
+ <li><label><input checked type="checkbox" name="beatles" value="J"> John</label></li>
+ <li><label><input type="checkbox" name="beatles" value="P"> Paul</label></li>
+ <li><label><input type="checkbox" name="beatles" value="G"> George</label></li>
+ <li><label><input type="checkbox" name="beatles" value="R"> Ringo</label></li>
</ul>"""
))
def test_render_value_multiple(self):
self.check_html(self.widget(choices=self.beatles), 'beatles', ['J', 'P'], html=(
"""<ul>
- <li><label><input checked type="checkbox" name="beatles" value="J" /> John</label></li>
- <li><label><input checked type="checkbox" name="beatles" value="P" /> Paul</label></li>
- <li><label><input type="checkbox" name="beatles" value="G" /> George</label></li>
- <li><label><input type="checkbox" name="beatles" value="R" /> Ringo</label></li>
+ <li><label><input checked type="checkbox" name="beatles" value="J"> John</label></li>
+ <li><label><input checked type="checkbox" name="beatles" value="P"> Paul</label></li>
+ <li><label><input type="checkbox" name="beatles" value="G"> George</label></li>
+ <li><label><input type="checkbox" name="beatles" value="R"> Ringo</label></li>
</ul>"""
))
@@ -36,10 +36,10 @@ class CheckboxSelectMultipleTest(WidgetTest):
"""
self.check_html(self.widget(choices=self.beatles), 'beatles', None, html=(
"""<ul>
- <li><label><input type="checkbox" name="beatles" value="J" /> John</label></li>
- <li><label><input type="checkbox" name="beatles" value="P" /> Paul</label></li>
- <li><label><input type="checkbox" name="beatles" value="G" /> George</label></li>
- <li><label><input type="checkbox" name="beatles" value="R" /> Ringo</label></li>
+ <li><label><input type="checkbox" name="beatles" value="J"> John</label></li>
+ <li><label><input type="checkbox" name="beatles" value="P"> Paul</label></li>
+ <li><label><input type="checkbox" name="beatles" value="G"> George</label></li>
+ <li><label><input type="checkbox" name="beatles" value="R"> Ringo</label></li>
</ul>"""
))
@@ -52,25 +52,25 @@ class CheckboxSelectMultipleTest(WidgetTest):
html = """
<ul id="media">
<li>
- <label for="media_0"><input id="media_0" name="nestchoice" type="checkbox" value="unknown" /> Unknown</label>
+ <label for="media_0"><input id="media_0" name="nestchoice" type="checkbox" value="unknown"> Unknown</label>
</li>
<li>Audio<ul id="media_1">
<li>
<label for="media_1_0">
- <input checked id="media_1_0" name="nestchoice" type="checkbox" value="vinyl" /> Vinyl
+ <input checked id="media_1_0" name="nestchoice" type="checkbox" value="vinyl"> Vinyl
</label>
</li>
<li>
- <label for="media_1_1"><input id="media_1_1" name="nestchoice" type="checkbox" value="cd" /> CD</label>
+ <label for="media_1_1"><input id="media_1_1" name="nestchoice" type="checkbox" value="cd"> CD</label>
</li>
</ul></li>
<li>Video<ul id="media_2">
<li>
- <label for="media_2_0"><input id="media_2_0" name="nestchoice" type="checkbox" value="vhs" /> VHS</label>
+ <label for="media_2_0"><input id="media_2_0" name="nestchoice" type="checkbox" value="vhs"> VHS</label>
</li>
<li>
<label for="media_2_1">
- <input checked id="media_2_1" name="nestchoice" type="checkbox" value="dvd" /> DVD
+ <input checked id="media_2_1" name="nestchoice" type="checkbox" value="dvd"> DVD
</label>
</li>
</ul></li>
@@ -90,25 +90,25 @@ class CheckboxSelectMultipleTest(WidgetTest):
html = """
<ul>
<li>
- <label><input name="nestchoice" type="checkbox" value="unknown" /> Unknown</label>
+ <label><input name="nestchoice" type="checkbox" value="unknown"> Unknown</label>
</li>
<li>Audio<ul>
<li>
<label>
- <input checked name="nestchoice" type="checkbox" value="vinyl" /> Vinyl
+ <input checked name="nestchoice" type="checkbox" value="vinyl"> Vinyl
</label>
</li>
<li>
- <label><input name="nestchoice" type="checkbox" value="cd" /> CD</label>
+ <label><input name="nestchoice" type="checkbox" value="cd"> CD</label>
</li>
</ul></li>
<li>Video<ul>
<li>
- <label><input name="nestchoice" type="checkbox" value="vhs" /> VHS</label>
+ <label><input name="nestchoice" type="checkbox" value="vhs"> VHS</label>
</li>
<li>
<label>
- <input checked name="nestchoice" type="checkbox" value="dvd" /> DVD
+ <input checked name="nestchoice" type="checkbox" value="dvd"> DVD
</label>
</li>
</ul></li>
@@ -124,11 +124,11 @@ class CheckboxSelectMultipleTest(WidgetTest):
html = """
<ul id="abc">
<li>
- <label for="abc_0"><input checked type="checkbox" name="letters" value="a" id="abc_0" /> A</label>
+ <label for="abc_0"><input checked type="checkbox" name="letters" value="a" id="abc_0"> A</label>
</li>
- <li><label for="abc_1"><input type="checkbox" name="letters" value="b" id="abc_1" /> B</label></li>
+ <li><label for="abc_1"><input type="checkbox" name="letters" value="b" id="abc_1"> B</label></li>
<li>
- <label for="abc_2"><input checked type="checkbox" name="letters" value="c" id="abc_2" /> C</label>
+ <label for="abc_2"><input checked type="checkbox" name="letters" value="c" id="abc_2"> C</label>
</li>
</ul>
"""
@@ -142,11 +142,11 @@ class CheckboxSelectMultipleTest(WidgetTest):
html = """
<ul id="abc">
<li>
- <label for="abc_0"><input checked type="checkbox" name="letters" value="a" id="abc_0" /> A</label>
+ <label for="abc_0"><input checked type="checkbox" name="letters" value="a" id="abc_0"> A</label>
</li>
- <li><label for="abc_1"><input type="checkbox" name="letters" value="b" id="abc_1" /> B</label></li>
+ <li><label for="abc_1"><input type="checkbox" name="letters" value="b" id="abc_1"> B</label></li>
<li>
- <label for="abc_2"><input checked type="checkbox" name="letters" value="c" id="abc_2" /> C</label>
+ <label for="abc_2"><input checked type="checkbox" name="letters" value="c" id="abc_2"> C</label>
</li>
</ul>
"""
@@ -161,9 +161,9 @@ class CheckboxSelectMultipleTest(WidgetTest):
]
html = """
<ul>
- <li><label><input type="checkbox" name="numbers" value="1" /> One</label></li>
- <li><label><input type="checkbox" name="numbers" value="1000" /> One thousand</label></li>
- <li><label><input type="checkbox" name="numbers" value="1000000" /> One million</label></li>
+ <li><label><input type="checkbox" name="numbers" value="1"> One</label></li>
+ <li><label><input type="checkbox" name="numbers" value="1000"> One thousand</label></li>
+ <li><label><input type="checkbox" name="numbers" value="1000000"> One million</label></li>
</ul>
"""
self.check_html(self.widget(choices=choices), 'numbers', None, html=html)
@@ -174,8 +174,8 @@ class CheckboxSelectMultipleTest(WidgetTest):
]
html = """
<ul>
- <li><label><input type="checkbox" name="times" value="00:00:00" /> midnight</label></li>
- <li><label><input type="checkbox" name="times" value="12:00:00" /> noon</label></li>
+ <li><label><input type="checkbox" name="times" value="00:00:00"> midnight</label></li>
+ <li><label><input type="checkbox" name="times" value="12:00:00"> noon</label></li>
</ul>
"""
self.check_html(self.widget(choices=choices), 'times', None, html=html)
diff --git a/tests/forms_tests/widget_tests/test_clearablefileinput.py b/tests/forms_tests/widget_tests/test_clearablefileinput.py
index f338269d09..2ba376db8a 100644
--- a/tests/forms_tests/widget_tests/test_clearablefileinput.py
+++ b/tests/forms_tests/widget_tests/test_clearablefileinput.py
@@ -26,9 +26,9 @@ class ClearableFileInputTest(WidgetTest):
self.check_html(self.widget, 'myfile', FakeFieldFile(), html=(
"""
Currently: <a href="something">something</a>
- <input type="checkbox" name="myfile-clear" id="myfile-clear_id" />
- <label for="myfile-clear_id">Clear</label><br />
- Change: <input type="file" name="myfile" />
+ <input type="checkbox" name="myfile-clear" id="myfile-clear_id">
+ <label for="myfile-clear_id">Clear</label><br>
+ Change: <input type="file" name="myfile">
"""
))
@@ -47,9 +47,9 @@ class ClearableFileInputTest(WidgetTest):
"""
Currently: <a href="something?chapter=1&amp;sect=2&amp;copy=3&amp;lang=en">
something&lt;div onclick=&quot;alert(&#39;oops&#39;)&quot;&gt;.jpg</a>
- <input type="checkbox" name="my&lt;div&gt;file-clear" id="my&lt;div&gt;file-clear_id" />
- <label for="my&lt;div&gt;file-clear_id">Clear</label><br />
- Change: <input type="file" name="my&lt;div&gt;file" />
+ <input type="checkbox" name="my&lt;div&gt;file-clear" id="my&lt;div&gt;file-clear_id">
+ <label for="my&lt;div&gt;file-clear_id">Clear</label><br>
+ Change: <input type="file" name="my&lt;div&gt;file">
"""
))
@@ -62,8 +62,8 @@ class ClearableFileInputTest(WidgetTest):
widget.is_required = True
self.check_html(widget, 'myfile', FakeFieldFile(), html=(
"""
- Currently: <a href="something">something</a> <br />
- Change: <input type="file" name="myfile" />
+ Currently: <a href="something">something</a> <br>
+ Change: <input type="file" name="myfile">
"""
))
@@ -72,7 +72,7 @@ class ClearableFileInputTest(WidgetTest):
A ClearableFileInput instantiated with no initial value does not render
a clear checkbox.
"""
- self.check_html(self.widget, 'myfile', None, html='<input type="file" name="myfile" />')
+ self.check_html(self.widget, 'myfile', None, html='<input type="file" name="myfile">')
def test_render_as_subwidget(self):
"""A ClearableFileInput as a subwidget of MultiWidget."""
@@ -80,9 +80,9 @@ class ClearableFileInputTest(WidgetTest):
self.check_html(widget, 'myfile', [FakeFieldFile()], html=(
"""
Currently: <a href="something">something</a>
- <input type="checkbox" name="myfile_0-clear" id="myfile_0-clear_id" />
- <label for="myfile_0-clear_id">Clear</label><br />
- Change: <input type="file" name="myfile_0" />
+ <input type="checkbox" name="myfile_0-clear" id="myfile_0-clear_id">
+ <label for="myfile_0-clear_id">Clear</label><br>
+ Change: <input type="file" name="myfile_0">
"""
))
@@ -148,7 +148,7 @@ class ClearableFileInputTest(WidgetTest):
return 'value'
html = self.widget.render('myfile', NoURLFieldFile())
- self.assertHTMLEqual(html, '<input name="myfile" type="file" />')
+ self.assertHTMLEqual(html, '<input name="myfile" type="file">')
def test_use_required_attribute(self):
# False when initial data exists. The file input is left blank by the
diff --git a/tests/forms_tests/widget_tests/test_dateinput.py b/tests/forms_tests/widget_tests/test_dateinput.py
index 3cf15fed8a..8fae6c672a 100644
--- a/tests/forms_tests/widget_tests/test_dateinput.py
+++ b/tests/forms_tests/widget_tests/test_dateinput.py
@@ -11,15 +11,15 @@ class DateInputTest(WidgetTest):
widget = DateInput()
def test_render_none(self):
- self.check_html(self.widget, 'date', None, html='<input type="text" name="date" />')
+ self.check_html(self.widget, 'date', None, html='<input type="text" name="date">')
def test_render_value(self):
d = date(2007, 9, 17)
self.assertEqual(str(d), '2007-09-17')
- self.check_html(self.widget, 'date', d, html='<input type="text" name="date" value="2007-09-17" />')
+ self.check_html(self.widget, 'date', d, html='<input type="text" name="date" value="2007-09-17">')
self.check_html(self.widget, 'date', date(2007, 9, 17), html=(
- '<input type="text" name="date" value="2007-09-17" />'
+ '<input type="text" name="date" value="2007-09-17">'
))
def test_string(self):
@@ -27,7 +27,7 @@ class DateInputTest(WidgetTest):
Should be able to initialize from a string value.
"""
self.check_html(self.widget, 'date', '2007-09-17', html=(
- '<input type="text" name="date" value="2007-09-17" />'
+ '<input type="text" name="date" value="2007-09-17">'
))
def test_format(self):
@@ -36,12 +36,12 @@ class DateInputTest(WidgetTest):
"""
d = date(2007, 9, 17)
widget = DateInput(format='%d/%m/%Y', attrs={'type': 'date'})
- self.check_html(widget, 'date', d, html='<input type="date" name="date" value="17/09/2007" />')
+ self.check_html(widget, 'date', d, html='<input type="date" name="date" value="17/09/2007">')
@override_settings(USE_L10N=True)
@translation.override('de-at')
def test_l10n(self):
self.check_html(
self.widget, 'date', date(2007, 9, 17),
- html='<input type="text" name="date" value="17.09.2007" />',
+ html='<input type="text" name="date" value="17.09.2007">',
)
diff --git a/tests/forms_tests/widget_tests/test_datetimeinput.py b/tests/forms_tests/widget_tests/test_datetimeinput.py
index 50fd7f5442..682ded3c84 100644
--- a/tests/forms_tests/widget_tests/test_datetimeinput.py
+++ b/tests/forms_tests/widget_tests/test_datetimeinput.py
@@ -11,7 +11,7 @@ class DateTimeInputTest(WidgetTest):
widget = DateTimeInput()
def test_render_none(self):
- self.check_html(self.widget, 'date', None, '<input type="text" name="date" />')
+ self.check_html(self.widget, 'date', None, '<input type="text" name="date">')
def test_render_value(self):
"""
@@ -20,13 +20,13 @@ class DateTimeInputTest(WidgetTest):
d = datetime(2007, 9, 17, 12, 51, 34, 482548)
self.assertEqual(str(d), '2007-09-17 12:51:34.482548')
self.check_html(self.widget, 'date', d, html=(
- '<input type="text" name="date" value="2007-09-17 12:51:34" />'
+ '<input type="text" name="date" value="2007-09-17 12:51:34">'
))
self.check_html(self.widget, 'date', datetime(2007, 9, 17, 12, 51, 34), html=(
- '<input type="text" name="date" value="2007-09-17 12:51:34" />'
+ '<input type="text" name="date" value="2007-09-17 12:51:34">'
))
self.check_html(self.widget, 'date', datetime(2007, 9, 17, 12, 51), html=(
- '<input type="text" name="date" value="2007-09-17 12:51:00" />'
+ '<input type="text" name="date" value="2007-09-17 12:51:00">'
))
def test_render_formatted(self):
@@ -37,14 +37,14 @@ class DateTimeInputTest(WidgetTest):
format='%d/%m/%Y %H:%M', attrs={'type': 'datetime'},
)
d = datetime(2007, 9, 17, 12, 51, 34, 482548)
- self.check_html(widget, 'date', d, html='<input type="datetime" name="date" value="17/09/2007 12:51" />')
+ self.check_html(widget, 'date', d, html='<input type="datetime" name="date" value="17/09/2007 12:51">')
@override_settings(USE_L10N=True)
@translation.override('de-at')
def test_l10n(self):
d = datetime(2007, 9, 17, 12, 51, 34, 482548)
self.check_html(self.widget, 'date', d, html=(
- '<input type="text" name="date" value="17.09.2007 12:51:34" />'
+ '<input type="text" name="date" value="17.09.2007 12:51:34">'
))
@override_settings(USE_L10N=True)
@@ -54,10 +54,10 @@ class DateTimeInputTest(WidgetTest):
with self.settings(USE_L10N=False):
self.check_html(
self.widget, 'date', d,
- html='<input type="text" name="date" value="2007-09-17 12:51:34" />',
+ html='<input type="text" name="date" value="2007-09-17 12:51:34">',
)
with translation.override('es'):
self.check_html(
self.widget, 'date', d,
- html='<input type="text" name="date" value="17/09/2007 12:51:34" />',
+ html='<input type="text" name="date" value="17/09/2007 12:51:34">',
)
diff --git a/tests/forms_tests/widget_tests/test_fileinput.py b/tests/forms_tests/widget_tests/test_fileinput.py
index 6e96dc7b5f..bbd7c7fe52 100644
--- a/tests/forms_tests/widget_tests/test_fileinput.py
+++ b/tests/forms_tests/widget_tests/test_fileinput.py
@@ -11,9 +11,9 @@ class FileInputTest(WidgetTest):
FileInput widgets never render the value attribute. The old value
isn't useful if a form is updated or an error occurred.
"""
- self.check_html(self.widget, 'email', 'test@example.com', html='<input type="file" name="email" />')
- self.check_html(self.widget, 'email', '', html='<input type="file" name="email" />')
- self.check_html(self.widget, 'email', None, html='<input type="file" name="email" />')
+ self.check_html(self.widget, 'email', 'test@example.com', html='<input type="file" name="email">')
+ self.check_html(self.widget, 'email', '', html='<input type="file" name="email">')
+ self.check_html(self.widget, 'email', None, html='<input type="file" name="email">')
def test_value_omitted_from_data(self):
self.assertIs(self.widget.value_omitted_from_data({}, {}, 'field'), True)
diff --git a/tests/forms_tests/widget_tests/test_hiddeninput.py b/tests/forms_tests/widget_tests/test_hiddeninput.py
index d1604a31e4..a7d036410c 100644
--- a/tests/forms_tests/widget_tests/test_hiddeninput.py
+++ b/tests/forms_tests/widget_tests/test_hiddeninput.py
@@ -7,7 +7,7 @@ class HiddenInputTest(WidgetTest):
widget = HiddenInput()
def test_render(self):
- self.check_html(self.widget, 'email', '', html='<input type="hidden" name="email" />')
+ self.check_html(self.widget, 'email', '', html='<input type="hidden" name="email">')
def test_use_required_attribute(self):
# Always False to avoid browser validation on inputs hidden from the
diff --git a/tests/forms_tests/widget_tests/test_input.py b/tests/forms_tests/widget_tests/test_input.py
index e773d94d8a..8be971826e 100644
--- a/tests/forms_tests/widget_tests/test_input.py
+++ b/tests/forms_tests/widget_tests/test_input.py
@@ -8,8 +8,8 @@ class InputTests(WidgetTest):
def test_attrs_with_type(self):
attrs = {'type': 'date'}
widget = Input(attrs)
- self.check_html(widget, 'name', 'value', '<input type="date" name="name" value="value" />')
+ self.check_html(widget, 'name', 'value', '<input type="date" name="name" value="value">')
# reuse the same attrs for another widget
- self.check_html(Input(attrs), 'name', 'value', '<input type="date" name="name" value="value" />')
+ self.check_html(Input(attrs), 'name', 'value', '<input type="date" name="name" value="value">')
attrs['type'] = 'number' # shouldn't change the widget type
- self.check_html(widget, 'name', 'value', '<input type="date" name="name" value="value" />')
+ self.check_html(widget, 'name', 'value', '<input type="date" name="name" value="value">')
diff --git a/tests/forms_tests/widget_tests/test_multiplehiddeninput.py b/tests/forms_tests/widget_tests/test_multiplehiddeninput.py
index d1c1ae6fa5..37d54174ee 100644
--- a/tests/forms_tests/widget_tests/test_multiplehiddeninput.py
+++ b/tests/forms_tests/widget_tests/test_multiplehiddeninput.py
@@ -9,30 +9,30 @@ class MultipleHiddenInputTest(WidgetTest):
def test_render_single(self):
self.check_html(
self.widget, 'email', ['test@example.com'],
- html='<input type="hidden" name="email" value="test@example.com" />',
+ html='<input type="hidden" name="email" value="test@example.com">',
)
def test_render_multiple(self):
self.check_html(
self.widget, 'email', ['test@example.com', 'foo@example.com'],
html=(
- '<input type="hidden" name="email" value="test@example.com" />\n'
- '<input type="hidden" name="email" value="foo@example.com" />'
+ '<input type="hidden" name="email" value="test@example.com">\n'
+ '<input type="hidden" name="email" value="foo@example.com">'
),
)
def test_render_attrs(self):
self.check_html(
self.widget, 'email', ['test@example.com'], attrs={'class': 'fun'},
- html='<input type="hidden" name="email" value="test@example.com" class="fun" />',
+ html='<input type="hidden" name="email" value="test@example.com" class="fun">',
)
def test_render_attrs_multiple(self):
self.check_html(
self.widget, 'email', ['test@example.com', 'foo@example.com'], attrs={'class': 'fun'},
html=(
- '<input type="hidden" name="email" value="test@example.com" class="fun" />\n'
- '<input type="hidden" name="email" value="foo@example.com" class="fun" />'
+ '<input type="hidden" name="email" value="test@example.com" class="fun">\n'
+ '<input type="hidden" name="email" value="foo@example.com" class="fun">'
),
)
@@ -41,18 +41,18 @@ class MultipleHiddenInputTest(WidgetTest):
self.check_html(widget, 'email', [], '')
self.check_html(
widget, 'email', ['foo@example.com'],
- html='<input type="hidden" class="fun" value="foo@example.com" name="email" />',
+ html='<input type="hidden" class="fun" value="foo@example.com" name="email">',
)
self.check_html(
widget, 'email', ['foo@example.com', 'test@example.com'],
html=(
- '<input type="hidden" class="fun" value="foo@example.com" name="email" />\n'
- '<input type="hidden" class="fun" value="test@example.com" name="email" />'
+ '<input type="hidden" class="fun" value="foo@example.com" name="email">\n'
+ '<input type="hidden" class="fun" value="test@example.com" name="email">'
),
)
self.check_html(
widget, 'email', ['foo@example.com'], attrs={'class': 'special'},
- html='<input type="hidden" class="special" value="foo@example.com" name="email" />',
+ html='<input type="hidden" class="special" value="foo@example.com" name="email">',
)
def test_render_empty(self):
@@ -68,8 +68,8 @@ class MultipleHiddenInputTest(WidgetTest):
self.check_html(
self.widget, 'letters', ['a', 'b', 'c'], attrs={'id': 'hideme'},
html=(
- '<input type="hidden" name="letters" value="a" id="hideme_0" />\n'
- '<input type="hidden" name="letters" value="b" id="hideme_1" />\n'
- '<input type="hidden" name="letters" value="c" id="hideme_2" />'
+ '<input type="hidden" name="letters" value="a" id="hideme_0">\n'
+ '<input type="hidden" name="letters" value="b" id="hideme_1">\n'
+ '<input type="hidden" name="letters" value="c" id="hideme_2">'
),
)
diff --git a/tests/forms_tests/widget_tests/test_multiwidget.py b/tests/forms_tests/widget_tests/test_multiwidget.py
index bce806231d..783eb78b85 100644
--- a/tests/forms_tests/widget_tests/test_multiwidget.py
+++ b/tests/forms_tests/widget_tests/test_multiwidget.py
@@ -88,16 +88,16 @@ class MultiWidgetTest(WidgetTest):
)
)
self.check_html(widget, 'name', ['john', 'lennon'], html=(
- '<input type="text" class="big" value="john" name="name_0" />'
- '<input type="text" class="small" value="lennon" name="name_1" />'
+ '<input type="text" class="big" value="john" name="name_0">'
+ '<input type="text" class="small" value="lennon" name="name_1">'
))
self.check_html(widget, 'name', 'john__lennon', html=(
- '<input type="text" class="big" value="john" name="name_0" />'
- '<input type="text" class="small" value="lennon" name="name_1" />'
+ '<input type="text" class="big" value="john" name="name_0">'
+ '<input type="text" class="small" value="lennon" name="name_1">'
))
self.check_html(widget, 'name', 'john__lennon', attrs={'id': 'foo'}, html=(
- '<input id="foo_0" type="text" class="big" value="john" name="name_0" />'
- '<input id="foo_1" type="text" class="small" value="lennon" name="name_1" />'
+ '<input id="foo_0" type="text" class="big" value="john" name="name_0">'
+ '<input id="foo_1" type="text" class="small" value="lennon" name="name_1">'
))
def test_constructor_attrs(self):
@@ -109,21 +109,21 @@ class MultiWidgetTest(WidgetTest):
attrs={'id': 'bar'},
)
self.check_html(widget, 'name', ['john', 'lennon'], html=(
- '<input id="bar_0" type="text" class="big" value="john" name="name_0" />'
- '<input id="bar_1" type="text" class="small" value="lennon" name="name_1" />'
+ '<input id="bar_0" type="text" class="big" value="john" name="name_0">'
+ '<input id="bar_1" type="text" class="small" value="lennon" name="name_1">'
))
def test_constructor_attrs_with_type(self):
attrs = {'type': 'number'}
widget = MyMultiWidget(widgets=(TextInput, TextInput()), attrs=attrs)
self.check_html(widget, 'code', ['1', '2'], html=(
- '<input type="number" value="1" name="code_0" />'
- '<input type="number" value="2" name="code_1" />'
+ '<input type="number" value="1" name="code_0">'
+ '<input type="number" value="2" name="code_1">'
))
widget = MyMultiWidget(widgets=(TextInput(attrs), TextInput(attrs)), attrs={'class': 'bar'})
self.check_html(widget, 'code', ['1', '2'], html=(
- '<input type="number" value="1" name="code_0" class="bar" />'
- '<input type="number" value="2" name="code_1" class="bar" />'
+ '<input type="number" value="1" name="code_0" class="bar">'
+ '<input type="number" value="2" name="code_1" class="bar">'
))
def test_value_omitted_from_data(self):
@@ -154,23 +154,23 @@ class MultiWidgetTest(WidgetTest):
widget = ComplexMultiWidget()
self.check_html(widget, 'name', 'some text,JP,2007-04-25 06:24:00', html=(
"""
- <input type="text" name="name_0" value="some text" />
+ <input type="text" name="name_0" value="some text">
<select multiple name="name_1">
<option value="J" selected>John</option>
<option value="P" selected>Paul</option>
<option value="G">George</option>
<option value="R">Ringo</option>
</select>
- <input type="text" name="name_2_0" value="2007-04-25" />
- <input type="text" name="name_2_1" value="06:24:00" />
+ <input type="text" name="name_2_0" value="2007-04-25">
+ <input type="text" name="name_2_1" value="06:24:00">
"""
))
def test_no_whitespace_between_widgets(self):
widget = MyMultiWidget(widgets=(TextInput, TextInput()))
self.check_html(widget, 'code', None, html=(
- '<input type="text" name="code_0" />'
- '<input type="text" name="code_1" />'
+ '<input type="text" name="code_0">'
+ '<input type="text" name="code_1">'
), strict=True)
def test_deepcopy(self):
diff --git a/tests/forms_tests/widget_tests/test_numberinput.py b/tests/forms_tests/widget_tests/test_numberinput.py
index 95a0a9250a..40bd94df6e 100644
--- a/tests/forms_tests/widget_tests/test_numberinput.py
+++ b/tests/forms_tests/widget_tests/test_numberinput.py
@@ -11,5 +11,5 @@ class NumberInputTests(WidgetTest):
widget = NumberInput(attrs={'max': 12345, 'min': 1234, 'step': 9999})
self.check_html(
widget, 'name', 'value',
- '<input type="number" name="name" value="value" max="12345" min="1234" step="9999" />'
+ '<input type="number" name="name" value="value" max="12345" min="1234" step="9999">'
)
diff --git a/tests/forms_tests/widget_tests/test_passwordinput.py b/tests/forms_tests/widget_tests/test_passwordinput.py
index 4cb7c4ef47..ecbe274d69 100644
--- a/tests/forms_tests/widget_tests/test_passwordinput.py
+++ b/tests/forms_tests/widget_tests/test_passwordinput.py
@@ -7,10 +7,10 @@ class PasswordInputTest(WidgetTest):
widget = PasswordInput()
def test_render(self):
- self.check_html(self.widget, 'password', '', html='<input type="password" name="password" />')
+ self.check_html(self.widget, 'password', '', html='<input type="password" name="password">')
def test_render_ignore_value(self):
- self.check_html(self.widget, 'password', 'secret', html='<input type="password" name="password" />')
+ self.check_html(self.widget, 'password', 'secret', html='<input type="password" name="password">')
def test_render_value_true(self):
"""
@@ -18,9 +18,9 @@ class PasswordInputTest(WidgetTest):
render its value. For security reasons, this is off by default.
"""
widget = PasswordInput(render_value=True)
- self.check_html(widget, 'password', '', html='<input type="password" name="password" />')
- self.check_html(widget, 'password', None, html='<input type="password" name="password" />')
+ self.check_html(widget, 'password', '', html='<input type="password" name="password">')
+ self.check_html(widget, 'password', None, html='<input type="password" name="password">')
self.check_html(
widget, 'password', 'test@example.com',
- html='<input type="password" name="password" value="test@example.com" />',
+ html='<input type="password" name="password" value="test@example.com">',
)
diff --git a/tests/forms_tests/widget_tests/test_radioselect.py b/tests/forms_tests/widget_tests/test_radioselect.py
index 05f980eb36..d0a70c7953 100644
--- a/tests/forms_tests/widget_tests/test_radioselect.py
+++ b/tests/forms_tests/widget_tests/test_radioselect.py
@@ -13,11 +13,11 @@ class RadioSelectTest(WidgetTest):
choices = (('', '------'),) + self.beatles
self.check_html(self.widget(choices=choices), 'beatle', 'J', html=(
"""<ul>
- <li><label><input type="radio" name="beatle" value="" /> ------</label></li>
- <li><label><input checked type="radio" name="beatle" value="J" /> John</label></li>
- <li><label><input type="radio" name="beatle" value="P" /> Paul</label></li>
- <li><label><input type="radio" name="beatle" value="G" /> George</label></li>
- <li><label><input type="radio" name="beatle" value="R" /> Ringo</label></li>
+ <li><label><input type="radio" name="beatle" value=""> ------</label></li>
+ <li><label><input checked type="radio" name="beatle" value="J"> John</label></li>
+ <li><label><input type="radio" name="beatle" value="P"> Paul</label></li>
+ <li><label><input type="radio" name="beatle" value="G"> George</label></li>
+ <li><label><input type="radio" name="beatle" value="R"> Ringo</label></li>
</ul>"""
))
@@ -30,19 +30,19 @@ class RadioSelectTest(WidgetTest):
html = """
<ul id="media">
<li>
- <label for="media_0"><input id="media_0" name="nestchoice" type="radio" value="unknown" /> Unknown</label>
+ <label for="media_0"><input id="media_0" name="nestchoice" type="radio" value="unknown"> Unknown</label>
</li>
<li>Audio<ul id="media_1">
<li>
- <label for="media_1_0"><input id="media_1_0" name="nestchoice" type="radio" value="vinyl" /> Vinyl</label>
+ <label for="media_1_0"><input id="media_1_0" name="nestchoice" type="radio" value="vinyl"> Vinyl</label>
</li>
- <li><label for="media_1_1"><input id="media_1_1" name="nestchoice" type="radio" value="cd" /> CD</label></li>
+ <li><label for="media_1_1"><input id="media_1_1" name="nestchoice" type="radio" value="cd"> CD</label></li>
</ul></li>
<li>Video<ul id="media_2">
- <li><label for="media_2_0"><input id="media_2_0" name="nestchoice" type="radio" value="vhs" /> VHS</label></li>
+ <li><label for="media_2_0"><input id="media_2_0" name="nestchoice" type="radio" value="vhs"> VHS</label></li>
<li>
<label for="media_2_1">
- <input checked id="media_2_1" name="nestchoice" type="radio" value="dvd" /> DVD
+ <input checked id="media_2_1" name="nestchoice" type="radio" value="dvd"> DVD
</label>
</li>
</ul></li>
@@ -62,11 +62,11 @@ class RadioSelectTest(WidgetTest):
html = """
<ul id="foo">
<li>
- <label for="foo_0"><input checked type="radio" id="foo_0" value="J" name="beatle" /> John</label>
+ <label for="foo_0"><input checked type="radio" id="foo_0" value="J" name="beatle"> John</label>
</li>
- <li><label for="foo_1"><input type="radio" id="foo_1" value="P" name="beatle" /> Paul</label></li>
- <li><label for="foo_2"><input type="radio" id="foo_2" value="G" name="beatle" /> George</label></li>
- <li><label for="foo_3"><input type="radio" id="foo_3" value="R" name="beatle" /> Ringo</label></li>
+ <li><label for="foo_1"><input type="radio" id="foo_1" value="P" name="beatle"> Paul</label></li>
+ <li><label for="foo_2"><input type="radio" id="foo_2" value="G" name="beatle"> George</label></li>
+ <li><label for="foo_3"><input type="radio" id="foo_3" value="R" name="beatle"> Ringo</label></li>
</ul>
"""
self.check_html(widget, 'beatle', 'J', html=html)
@@ -79,11 +79,11 @@ class RadioSelectTest(WidgetTest):
html = """
<ul id="bar">
<li>
- <label for="bar_0"><input checked type="radio" id="bar_0" value="J" name="beatle" /> John</label>
+ <label for="bar_0"><input checked type="radio" id="bar_0" value="J" name="beatle"> John</label>
</li>
- <li><label for="bar_1"><input type="radio" id="bar_1" value="P" name="beatle" /> Paul</label></li>
- <li><label for="bar_2"><input type="radio" id="bar_2" value="G" name="beatle" /> George</label></li>
- <li><label for="bar_3"><input type="radio" id="bar_3" value="R" name="beatle" /> Ringo</label></li>
+ <li><label for="bar_1"><input type="radio" id="bar_1" value="P" name="beatle"> Paul</label></li>
+ <li><label for="bar_2"><input type="radio" id="bar_2" value="G" name="beatle"> George</label></li>
+ <li><label for="bar_3"><input type="radio" id="bar_3" value="R" name="beatle"> Ringo</label></li>
</ul>
"""
self.check_html(self.widget(choices=self.beatles), 'beatle', 'J', attrs={'id': 'bar'}, html=html)
@@ -95,10 +95,10 @@ class RadioSelectTest(WidgetTest):
"""
html = """
<ul class="bar">
- <li><label><input checked type="radio" class="bar" value="J" name="beatle" /> John</label></li>
- <li><label><input type="radio" class="bar" value="P" name="beatle" /> Paul</label></li>
- <li><label><input type="radio" class="bar" value="G" name="beatle" /> George</label></li>
- <li><label><input type="radio" class="bar" value="R" name="beatle" /> Ringo</label></li>
+ <li><label><input checked type="radio" class="bar" value="J" name="beatle"> John</label></li>
+ <li><label><input type="radio" class="bar" value="P" name="beatle"> Paul</label></li>
+ <li><label><input type="radio" class="bar" value="G" name="beatle"> George</label></li>
+ <li><label><input type="radio" class="bar" value="R" name="beatle"> Ringo</label></li>
</ul>
"""
self.check_html(self.widget(choices=self.beatles), 'beatle', 'J', attrs={'class': 'bar'}, html=html)
@@ -112,9 +112,9 @@ class RadioSelectTest(WidgetTest):
]
html = """
<ul>
- <li><label><input type="radio" name="number" value="1" /> One</label></li>
- <li><label><input type="radio" name="number" value="1000" /> One thousand</label></li>
- <li><label><input type="radio" name="number" value="1000000" /> One million</label></li>
+ <li><label><input type="radio" name="number" value="1"> One</label></li>
+ <li><label><input type="radio" name="number" value="1000"> One thousand</label></li>
+ <li><label><input type="radio" name="number" value="1000000"> One million</label></li>
</ul>
"""
self.check_html(self.widget(choices=choices), 'number', None, html=html)
@@ -125,8 +125,8 @@ class RadioSelectTest(WidgetTest):
]
html = """
<ul>
- <li><label><input type="radio" name="time" value="00:00:00" /> midnight</label></li>
- <li><label><input type="radio" name="time" value="12:00:00" /> noon</label></li>
+ <li><label><input type="radio" name="time" value="00:00:00"> midnight</label></li>
+ <li><label><input type="radio" name="time" value="12:00:00"> noon</label></li>
</ul>
"""
self.check_html(self.widget(choices=choices), 'time', None, html=html)
diff --git a/tests/forms_tests/widget_tests/test_splitdatetimewidget.py b/tests/forms_tests/widget_tests/test_splitdatetimewidget.py
index 3b06fd5958..ebb30da148 100644
--- a/tests/forms_tests/widget_tests/test_splitdatetimewidget.py
+++ b/tests/forms_tests/widget_tests/test_splitdatetimewidget.py
@@ -10,37 +10,37 @@ class SplitDateTimeWidgetTest(WidgetTest):
def test_render_empty(self):
self.check_html(self.widget, 'date', '', html=(
- '<input type="text" name="date_0" /><input type="text" name="date_1" />'
+ '<input type="text" name="date_0"><input type="text" name="date_1">'
))
def test_render_none(self):
self.check_html(self.widget, 'date', None, html=(
- '<input type="text" name="date_0" /><input type="text" name="date_1" />'
+ '<input type="text" name="date_0"><input type="text" name="date_1">'
))
def test_render_datetime(self):
self.check_html(self.widget, 'date', datetime(2006, 1, 10, 7, 30), html=(
- '<input type="text" name="date_0" value="2006-01-10" />'
- '<input type="text" name="date_1" value="07:30:00" />'
+ '<input type="text" name="date_0" value="2006-01-10">'
+ '<input type="text" name="date_1" value="07:30:00">'
))
def test_render_date_and_time(self):
self.check_html(self.widget, 'date', [date(2006, 1, 10), time(7, 30)], html=(
- '<input type="text" name="date_0" value="2006-01-10" />'
- '<input type="text" name="date_1" value="07:30:00" />'
+ '<input type="text" name="date_0" value="2006-01-10">'
+ '<input type="text" name="date_1" value="07:30:00">'
))
def test_constructor_attrs(self):
widget = SplitDateTimeWidget(attrs={'class': 'pretty'})
self.check_html(widget, 'date', datetime(2006, 1, 10, 7, 30), html=(
- '<input type="text" class="pretty" value="2006-01-10" name="date_0" />'
- '<input type="text" class="pretty" value="07:30:00" name="date_1" />'
+ '<input type="text" class="pretty" value="2006-01-10" name="date_0">'
+ '<input type="text" class="pretty" value="07:30:00" name="date_1">'
))
def test_constructor_different_attrs(self):
html = (
- '<input type="text" class="foo" value="2006-01-10" name="date_0" />'
- '<input type="text" class="bar" value="07:30:00" name="date_1" />'
+ '<input type="text" class="foo" value="2006-01-10" name="date_0">'
+ '<input type="text" class="bar" value="07:30:00" name="date_1">'
)
widget = SplitDateTimeWidget(date_attrs={'class': 'foo'}, time_attrs={'class': 'bar'})
self.check_html(widget, 'date', datetime(2006, 1, 10, 7, 30), html=html)
@@ -58,6 +58,6 @@ class SplitDateTimeWidgetTest(WidgetTest):
date_format='%d/%m/%Y', time_format='%H:%M',
)
self.check_html(widget, 'date', datetime(2006, 1, 10, 7, 30), html=(
- '<input type="text" name="date_0" value="10/01/2006" />'
- '<input type="text" name="date_1" value="07:30" />'
+ '<input type="text" name="date_0" value="10/01/2006">'
+ '<input type="text" name="date_1" value="07:30">'
))
diff --git a/tests/forms_tests/widget_tests/test_splithiddendatetimewidget.py b/tests/forms_tests/widget_tests/test_splithiddendatetimewidget.py
index e3adb11520..dff28161a5 100644
--- a/tests/forms_tests/widget_tests/test_splithiddendatetimewidget.py
+++ b/tests/forms_tests/widget_tests/test_splithiddendatetimewidget.py
@@ -12,22 +12,22 @@ class SplitHiddenDateTimeWidgetTest(WidgetTest):
def test_render_empty(self):
self.check_html(self.widget, 'date', '', html=(
- '<input type="hidden" name="date_0" /><input type="hidden" name="date_1" />'
+ '<input type="hidden" name="date_0"><input type="hidden" name="date_1">'
))
def test_render_value(self):
d = datetime(2007, 9, 17, 12, 51, 34, 482548)
self.check_html(self.widget, 'date', d, html=(
- '<input type="hidden" name="date_0" value="2007-09-17" />'
- '<input type="hidden" name="date_1" value="12:51:34" />'
+ '<input type="hidden" name="date_0" value="2007-09-17">'
+ '<input type="hidden" name="date_1" value="12:51:34">'
))
self.check_html(self.widget, 'date', datetime(2007, 9, 17, 12, 51, 34), html=(
- '<input type="hidden" name="date_0" value="2007-09-17" />'
- '<input type="hidden" name="date_1" value="12:51:34" />'
+ '<input type="hidden" name="date_0" value="2007-09-17">'
+ '<input type="hidden" name="date_1" value="12:51:34">'
))
self.check_html(self.widget, 'date', datetime(2007, 9, 17, 12, 51), html=(
- '<input type="hidden" name="date_0" value="2007-09-17" />'
- '<input type="hidden" name="date_1" value="12:51:00" />'
+ '<input type="hidden" name="date_0" value="2007-09-17">'
+ '<input type="hidden" name="date_1" value="12:51:00">'
))
@override_settings(USE_L10N=True)
@@ -36,15 +36,15 @@ class SplitHiddenDateTimeWidgetTest(WidgetTest):
d = datetime(2007, 9, 17, 12, 51)
self.check_html(self.widget, 'date', d, html=(
"""
- <input type="hidden" name="date_0" value="17.09.2007" />
- <input type="hidden" name="date_1" value="12:51:00" />
+ <input type="hidden" name="date_0" value="17.09.2007">
+ <input type="hidden" name="date_1" value="12:51:00">
"""
))
def test_constructor_different_attrs(self):
html = (
- '<input type="hidden" class="foo" value="2006-01-10" name="date_0" />'
- '<input type="hidden" class="bar" value="07:30:00" name="date_1" />'
+ '<input type="hidden" class="foo" value="2006-01-10" name="date_0">'
+ '<input type="hidden" class="bar" value="07:30:00" name="date_1">'
)
widget = SplitHiddenDateTimeWidget(date_attrs={'class': 'foo'}, time_attrs={'class': 'bar'})
self.check_html(widget, 'date', datetime(2006, 1, 10, 7, 30), html=html)
diff --git a/tests/forms_tests/widget_tests/test_textinput.py b/tests/forms_tests/widget_tests/test_textinput.py
index 906687d971..260e86f740 100644
--- a/tests/forms_tests/widget_tests/test_textinput.py
+++ b/tests/forms_tests/widget_tests/test_textinput.py
@@ -8,14 +8,14 @@ class TextInputTest(WidgetTest):
widget = TextInput()
def test_render(self):
- self.check_html(self.widget, 'email', '', html='<input type="text" name="email" />')
+ self.check_html(self.widget, 'email', '', html='<input type="text" name="email">')
def test_render_none(self):
- self.check_html(self.widget, 'email', None, html='<input type="text" name="email" />')
+ self.check_html(self.widget, 'email', None, html='<input type="text" name="email">')
def test_render_value(self):
self.check_html(self.widget, 'email', 'test@example.com', html=(
- '<input type="text" name="email" value="test@example.com" />'
+ '<input type="text" name="email" value="test@example.com">'
))
def test_render_boolean(self):
@@ -24,22 +24,22 @@ class TextInputTest(WidgetTest):
"False").
"""
self.check_html(self.widget, 'get_spam', False, html=(
- '<input type="text" name="get_spam" value="False" />'
+ '<input type="text" name="get_spam" value="False">'
))
self.check_html(self.widget, 'get_spam', True, html=(
- '<input type="text" name="get_spam" value="True" />'
+ '<input type="text" name="get_spam" value="True">'
))
def test_render_quoted(self):
self.check_html(
self.widget, 'email', 'some "quoted" & ampersanded value',
- html='<input type="text" name="email" value="some &quot;quoted&quot; &amp; ampersanded value" />',
+ html='<input type="text" name="email" value="some &quot;quoted&quot; &amp; ampersanded value">',
)
def test_render_custom_attrs(self):
self.check_html(
self.widget, 'email', 'test@example.com', attrs={'class': 'fun'},
- html='<input type="text" name="email" value="test@example.com" class="fun" />',
+ html='<input type="text" name="email" value="test@example.com" class="fun">',
)
def test_render_unicode(self):
@@ -47,16 +47,16 @@ class TextInputTest(WidgetTest):
self.widget, 'email', 'ŠĐĆŽćžšđ', attrs={'class': 'fun'},
html=(
'<input type="text" name="email" '
- 'value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" class="fun" />'
+ 'value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" class="fun">'
),
)
def test_constructor_attrs(self):
widget = TextInput(attrs={'class': 'fun', 'type': 'email'})
- self.check_html(widget, 'email', '', html='<input type="email" class="fun" name="email" />')
+ self.check_html(widget, 'email', '', html='<input type="email" class="fun" name="email">')
self.check_html(
widget, 'email', 'foo@example.com',
- html='<input type="email" class="fun" value="foo@example.com" name="email" />',
+ html='<input type="email" class="fun" value="foo@example.com" name="email">',
)
def test_attrs_precedence(self):
@@ -67,12 +67,12 @@ class TextInputTest(WidgetTest):
widget = TextInput(attrs={'class': 'pretty'})
self.check_html(
widget, 'email', '', attrs={'class': 'special'},
- html='<input type="text" class="special" name="email" />',
+ html='<input type="text" class="special" name="email">',
)
def test_attrs_safestring(self):
widget = TextInput(attrs={'onBlur': mark_safe("function('foo')")})
- self.check_html(widget, 'email', '', html='<input onBlur="function(\'foo\')" type="text" name="email" />')
+ self.check_html(widget, 'email', '', html='<input onBlur="function(\'foo\')" type="text" name="email">')
def test_use_required_attribute(self):
# Text inputs can safely trigger the browser validation.
diff --git a/tests/forms_tests/widget_tests/test_timeinput.py b/tests/forms_tests/widget_tests/test_timeinput.py
index ab355e2ec9..1a511e4cab 100644
--- a/tests/forms_tests/widget_tests/test_timeinput.py
+++ b/tests/forms_tests/widget_tests/test_timeinput.py
@@ -11,7 +11,7 @@ class TimeInputTest(WidgetTest):
widget = TimeInput()
def test_render_none(self):
- self.check_html(self.widget, 'time', None, html='<input type="text" name="time" />')
+ self.check_html(self.widget, 'time', None, html='<input type="text" name="time">')
def test_render_value(self):
"""
@@ -19,18 +19,18 @@ class TimeInputTest(WidgetTest):
"""
t = time(12, 51, 34, 482548)
self.assertEqual(str(t), '12:51:34.482548')
- self.check_html(self.widget, 'time', t, html='<input type="text" name="time" value="12:51:34" />')
+ self.check_html(self.widget, 'time', t, html='<input type="text" name="time" value="12:51:34">')
self.check_html(self.widget, 'time', time(12, 51, 34), html=(
- '<input type="text" name="time" value="12:51:34" />'
+ '<input type="text" name="time" value="12:51:34">'
))
self.check_html(self.widget, 'time', time(12, 51), html=(
- '<input type="text" name="time" value="12:51:00" />'
+ '<input type="text" name="time" value="12:51:00">'
))
def test_string(self):
"""Initializing from a string value."""
self.check_html(self.widget, 'time', '13:12:11', html=(
- '<input type="text" name="time" value="13:12:11" />'
+ '<input type="text" name="time" value="13:12:11">'
))
def test_format(self):
@@ -39,10 +39,10 @@ class TimeInputTest(WidgetTest):
"""
t = time(12, 51, 34, 482548)
widget = TimeInput(format='%H:%M', attrs={'type': 'time'})
- self.check_html(widget, 'time', t, html='<input type="time" name="time" value="12:51" />')
+ self.check_html(widget, 'time', t, html='<input type="time" name="time" value="12:51">')
@override_settings(USE_L10N=True)
@translation.override('de-at')
def test_l10n(self):
t = time(12, 51, 34, 482548)
- self.check_html(self.widget, 'time', t, html='<input type="text" name="time" value="12:51:34" />')
+ self.check_html(self.widget, 'time', t, html='<input type="text" name="time" value="12:51:34">')
diff --git a/tests/forms_tests/widget_tests/test_widget.py b/tests/forms_tests/widget_tests/test_widget.py
index f25fe1e5fe..8cde388b8f 100644
--- a/tests/forms_tests/widget_tests/test_widget.py
+++ b/tests/forms_tests/widget_tests/test_widget.py
@@ -19,8 +19,8 @@ class WidgetTests(WidgetTest):
self.assertIs(widget.value_omitted_from_data({'field': 'value'}, {}, 'field'), False)
def test_no_trailing_newline_in_attrs(self):
- self.check_html(Input(), 'name', 'value', strict=True, html='<input type="None" name="name" value="value" />')
+ self.check_html(Input(), 'name', 'value', strict=True, html='<input type="None" name="name" value="value">')
def test_attr_false_not_rendered(self):
- html = '<input type="None" name="name" value="value" />'
+ html = '<input type="None" name="name" value="value">'
self.check_html(Input(), 'name', 'value', html=html, attrs={'readonly': False})
diff --git a/tests/generic_relations/test_forms.py b/tests/generic_relations/test_forms.py
index 99ae882693..4b94f24531 100644
--- a/tests/generic_relations/test_forms.py
+++ b/tests/generic_relations/test_forms.py
@@ -30,24 +30,24 @@ class GenericInlineFormsetTests(TestCase):
''.join(form.as_p() for form in formset.forms),
"""<p><label for="id_generic_relations-taggeditem-content_type-object_id-0-tag">
Tag:</label> <input id="id_generic_relations-taggeditem-content_type-object_id-0-tag" type="text"
-name="generic_relations-taggeditem-content_type-object_id-0-tag" maxlength="50" /></p>
+name="generic_relations-taggeditem-content_type-object_id-0-tag" maxlength="50"></p>
<p><label for="id_generic_relations-taggeditem-content_type-object_id-0-DELETE">Delete:</label>
<input type="checkbox" name="generic_relations-taggeditem-content_type-object_id-0-DELETE"
-id="id_generic_relations-taggeditem-content_type-object_id-0-DELETE" />
+id="id_generic_relations-taggeditem-content_type-object_id-0-DELETE">
<input type="hidden" name="generic_relations-taggeditem-content_type-object_id-0-id"
-id="id_generic_relations-taggeditem-content_type-object_id-0-id" /></p>"""
+id="id_generic_relations-taggeditem-content_type-object_id-0-id"></p>"""
)
formset = GenericFormSet(instance=Animal())
self.assertHTMLEqual(
''.join(form.as_p() for form in formset.forms),
"""<p><label for="id_generic_relations-taggeditem-content_type-object_id-0-tag">
Tag:</label> <input id="id_generic_relations-taggeditem-content_type-object_id-0-tag"
-type="text" name="generic_relations-taggeditem-content_type-object_id-0-tag" maxlength="50" /></p>
+type="text" name="generic_relations-taggeditem-content_type-object_id-0-tag" maxlength="50"></p>
<p><label for="id_generic_relations-taggeditem-content_type-object_id-0-DELETE">Delete:</label>
<input type="checkbox" name="generic_relations-taggeditem-content_type-object_id-0-DELETE"
-id="id_generic_relations-taggeditem-content_type-object_id-0-DELETE" /><input type="hidden"
+id="id_generic_relations-taggeditem-content_type-object_id-0-DELETE"><input type="hidden"
name="generic_relations-taggeditem-content_type-object_id-0-id"
-id="id_generic_relations-taggeditem-content_type-object_id-0-id" /></p>"""
+id="id_generic_relations-taggeditem-content_type-object_id-0-id"></p>"""
)
platypus = Animal.objects.create(
common_name='Platypus', latin_name='Ornithorhynchus anatinus',
@@ -60,29 +60,29 @@ id="id_generic_relations-taggeditem-content_type-object_id-0-id" /></p>"""
''.join(form.as_p() for form in formset.forms),
"""<p><label for="id_generic_relations-taggeditem-content_type-object_id-0-tag">Tag:</label>
<input id="id_generic_relations-taggeditem-content_type-object_id-0-tag" type="text"
-name="generic_relations-taggeditem-content_type-object_id-0-tag" value="shiny" maxlength="50" /></p>
+name="generic_relations-taggeditem-content_type-object_id-0-tag" value="shiny" maxlength="50"></p>
<p><label for="id_generic_relations-taggeditem-content_type-object_id-0-DELETE">Delete:</label>
<input type="checkbox" name="generic_relations-taggeditem-content_type-object_id-0-DELETE"
-id="id_generic_relations-taggeditem-content_type-object_id-0-DELETE" />
+id="id_generic_relations-taggeditem-content_type-object_id-0-DELETE">
<input type="hidden" name="generic_relations-taggeditem-content_type-object_id-0-id"
-value="%s" id="id_generic_relations-taggeditem-content_type-object_id-0-id" /></p>
+value="%s" id="id_generic_relations-taggeditem-content_type-object_id-0-id"></p>
<p><label for="id_generic_relations-taggeditem-content_type-object_id-1-tag">Tag:</label>
<input id="id_generic_relations-taggeditem-content_type-object_id-1-tag" type="text"
-name="generic_relations-taggeditem-content_type-object_id-1-tag" maxlength="50" /></p>
+name="generic_relations-taggeditem-content_type-object_id-1-tag" maxlength="50"></p>
<p><label for="id_generic_relations-taggeditem-content_type-object_id-1-DELETE">Delete:</label>
<input type="checkbox" name="generic_relations-taggeditem-content_type-object_id-1-DELETE"
-id="id_generic_relations-taggeditem-content_type-object_id-1-DELETE" />
+id="id_generic_relations-taggeditem-content_type-object_id-1-DELETE">
<input type="hidden" name="generic_relations-taggeditem-content_type-object_id-1-id"
-id="id_generic_relations-taggeditem-content_type-object_id-1-id" /></p>""" % tagged_item_id
+id="id_generic_relations-taggeditem-content_type-object_id-1-id"></p>""" % tagged_item_id
)
lion = Animal.objects.create(common_name='Lion', latin_name='Panthera leo')
formset = GenericFormSet(instance=lion, prefix='x')
self.assertHTMLEqual(
''.join(form.as_p() for form in formset.forms),
"""<p><label for="id_x-0-tag">Tag:</label>
-<input id="id_x-0-tag" type="text" name="x-0-tag" maxlength="50" /></p>
-<p><label for="id_x-0-DELETE">Delete:</label> <input type="checkbox" name="x-0-DELETE" id="id_x-0-DELETE" />
-<input type="hidden" name="x-0-id" id="id_x-0-id" /></p>"""
+<input id="id_x-0-tag" type="text" name="x-0-tag" maxlength="50"></p>
+<p><label for="id_x-0-DELETE">Delete:</label> <input type="checkbox" name="x-0-DELETE" id="id_x-0-DELETE">
+<input type="hidden" name="x-0-id" id="id_x-0-id"></p>"""
)
def test_options(self):
@@ -101,7 +101,7 @@ id="id_generic_relations-taggeditem-content_type-object_id-1-id" /></p>""" % tag
self.assertHTMLEqual(
formset.forms[0].as_p(),
'<input type="hidden" name="generic_relations-taggeditem-content_type-object_id-0-id" value="%s" '
- 'id="id_generic_relations-taggeditem-content_type-object_id-0-id" />' % harmless.pk
+ 'id="id_generic_relations-taggeditem-content_type-object_id-0-id">' % harmless.pk
)
self.assertEqual(formset.forms[0].instance, harmless)
self.assertEqual(formset.forms[1].instance, mammal)
diff --git a/tests/i18n/tests.py b/tests/i18n/tests.py
index 5fb710faf8..8eedf09d68 100644
--- a/tests/i18n/tests.py
+++ b/tests/i18n/tests.py
@@ -909,13 +909,13 @@ class FormattingTests(SimpleTestCase):
self.assertHTMLEqual(
form6.as_ul(),
'<li><label for="id_name">Name:</label>'
- '<input id="id_name" type="text" name="name" value="acme" maxlength="50" required /></li>'
+ '<input id="id_name" type="text" name="name" value="acme" maxlength="50" required></li>'
'<li><label for="id_date_added">Date added:</label>'
- '<input type="text" name="date_added" value="31.12.2009 06:00:00" id="id_date_added" required /></li>'
+ '<input type="text" name="date_added" value="31.12.2009 06:00:00" id="id_date_added" required></li>'
'<li><label for="id_cents_paid">Cents paid:</label>'
- '<input type="text" name="cents_paid" value="59,47" id="id_cents_paid" required /></li>'
+ '<input type="text" name="cents_paid" value="59,47" id="id_cents_paid" required></li>'
'<li><label for="id_products_delivered">Products delivered:</label>'
- '<input type="text" name="products_delivered" value="12000" id="id_products_delivered" required />'
+ '<input type="text" name="products_delivered" value="12000" id="id_products_delivered" required>'
'</li>'
)
self.assertEqual(localize_input(datetime.datetime(2009, 12, 31, 6, 0, 0)), '31.12.2009 06:00:00')
@@ -924,7 +924,7 @@ class FormattingTests(SimpleTestCase):
# Checking for the localized "products_delivered" field
self.assertInHTML(
'<input type="text" name="products_delivered" '
- 'value="12.000" id="id_products_delivered" required />',
+ 'value="12.000" id="id_products_delivered" required>',
form6.as_ul()
)
@@ -1073,18 +1073,18 @@ class FormattingTests(SimpleTestCase):
self.assertHTMLEqual(
template.render(context),
- '<input id="id_date_added" name="date_added" type="text" value="31.12.2009 06:00:00" required />;'
- '<input id="id_cents_paid" name="cents_paid" type="text" value="59,47" required />'
+ '<input id="id_date_added" name="date_added" type="text" value="31.12.2009 06:00:00" required>;'
+ '<input id="id_cents_paid" name="cents_paid" type="text" value="59,47" required>'
)
self.assertHTMLEqual(
template_as_text.render(context),
- '<input id="id_date_added" name="date_added" type="text" value="31.12.2009 06:00:00" required />;'
- ' <input id="id_cents_paid" name="cents_paid" type="text" value="59,47" required />'
+ '<input id="id_date_added" name="date_added" type="text" value="31.12.2009 06:00:00" required>;'
+ ' <input id="id_cents_paid" name="cents_paid" type="text" value="59,47" required>'
)
self.assertHTMLEqual(
template_as_hidden.render(context),
- '<input id="id_date_added" name="date_added" type="hidden" value="31.12.2009 06:00:00" />;'
- '<input id="id_cents_paid" name="cents_paid" type="hidden" value="59,47" />'
+ '<input id="id_date_added" name="date_added" type="hidden" value="31.12.2009 06:00:00">;'
+ '<input id="id_cents_paid" name="cents_paid" type="hidden" value="59,47">'
)
def test_format_arbitrary_settings(self):
diff --git a/tests/model_forms/tests.py b/tests/model_forms/tests.py
index b6ce55cf40..406a137d80 100644
--- a/tests/model_forms/tests.py
+++ b/tests/model_forms/tests.py
@@ -536,11 +536,11 @@ class ModelFormBaseTest(TestCase):
self.assertHTMLEqual(
str(SubclassMeta()),
"""<tr><th><label for="id_name">Name:</label></th>
-<td><input id="id_name" type="text" name="name" maxlength="20" required /></td></tr>
+<td><input id="id_name" type="text" name="name" maxlength="20" required></td></tr>
<tr><th><label for="id_slug">Slug:</label></th>
-<td><input id="id_slug" type="text" name="slug" maxlength="20" required /></td></tr>
+<td><input id="id_slug" type="text" name="slug" maxlength="20" required></td></tr>
<tr><th><label for="id_checkbox">Checkbox:</label></th>
-<td><input type="checkbox" name="checkbox" id="id_checkbox" required /></td></tr>"""
+<td><input type="checkbox" name="checkbox" id="id_checkbox" required></td></tr>"""
)
def test_orderfields_form(self):
@@ -554,9 +554,9 @@ class ModelFormBaseTest(TestCase):
self.assertHTMLEqual(
str(OrderFields()),
"""<tr><th><label for="id_url">The URL:</label></th>
-<td><input id="id_url" type="text" name="url" maxlength="40" required /></td></tr>
+<td><input id="id_url" type="text" name="url" maxlength="40" required></td></tr>
<tr><th><label for="id_name">Name:</label></th>
-<td><input id="id_name" type="text" name="name" maxlength="20" required /></td></tr>"""
+<td><input id="id_name" type="text" name="name" maxlength="20" required></td></tr>"""
)
def test_orderfields2_form(self):
@@ -742,11 +742,11 @@ class TestFieldOverridesByFormMeta(SimpleTestCase):
)
self.assertHTMLEqual(
str(form['url']),
- '<input id="id_url" type="text" class="url" name="url" maxlength="40" required />',
+ '<input id="id_url" type="text" class="url" name="url" maxlength="40" required>',
)
self.assertHTMLEqual(
str(form['slug']),
- '<input id="id_slug" type="text" name="slug" maxlength="20" required />',
+ '<input id="id_slug" type="text" name="slug" maxlength="20" required>',
)
def test_label_overrides(self):
@@ -1123,29 +1123,29 @@ class ModelFormBasicTests(TestCase):
self.assertHTMLEqual(
str(f),
"""<tr><th><label for="id_name">Name:</label></th>
-<td><input id="id_name" type="text" name="name" maxlength="20" required /></td></tr>
+<td><input id="id_name" type="text" name="name" maxlength="20" required></td></tr>
<tr><th><label for="id_slug">Slug:</label></th>
-<td><input id="id_slug" type="text" name="slug" maxlength="20" required /></td></tr>
+<td><input id="id_slug" type="text" name="slug" maxlength="20" required></td></tr>
<tr><th><label for="id_url">The URL:</label></th>
-<td><input id="id_url" type="text" name="url" maxlength="40" required /></td></tr>"""
+<td><input id="id_url" type="text" name="url" maxlength="40" required></td></tr>"""
)
self.assertHTMLEqual(
str(f.as_ul()),
- """<li><label for="id_name">Name:</label> <input id="id_name" type="text" name="name" maxlength="20" required /></li>
-<li><label for="id_slug">Slug:</label> <input id="id_slug" type="text" name="slug" maxlength="20" required /></li>
-<li><label for="id_url">The URL:</label> <input id="id_url" type="text" name="url" maxlength="40" required /></li>"""
+ """<li><label for="id_name">Name:</label> <input id="id_name" type="text" name="name" maxlength="20" required></li>
+<li><label for="id_slug">Slug:</label> <input id="id_slug" type="text" name="slug" maxlength="20" required></li>
+<li><label for="id_url">The URL:</label> <input id="id_url" type="text" name="url" maxlength="40" required></li>"""
)
self.assertHTMLEqual(
str(f["name"]),
- """<input id="id_name" type="text" name="name" maxlength="20" required />""")
+ """<input id="id_name" type="text" name="name" maxlength="20" required>""")
def test_auto_id(self):
f = BaseCategoryForm(auto_id=False)
self.assertHTMLEqual(
str(f.as_ul()),
- """<li>Name: <input type="text" name="name" maxlength="20" required /></li>
-<li>Slug: <input type="text" name="slug" maxlength="20" required /></li>
-<li>The URL: <input type="text" name="url" maxlength="40" required /></li>"""
+ """<li>Name: <input type="text" name="name" maxlength="20" required></li>
+<li>Slug: <input type="text" name="slug" maxlength="20" required></li>
+<li>The URL: <input type="text" name="url" maxlength="40" required></li>"""
)
def test_initial_values(self):
@@ -1159,9 +1159,9 @@ class ModelFormBasicTests(TestCase):
})
self.assertHTMLEqual(
f.as_ul(),
- '''<li>Headline: <input type="text" name="headline" value="Your headline here" maxlength="50" required /></li>
-<li>Slug: <input type="text" name="slug" maxlength="50" required /></li>
-<li>Pub date: <input type="text" name="pub_date" required /></li>
+ '''<li>Headline: <input type="text" name="headline" value="Your headline here" maxlength="50" required></li>
+<li>Slug: <input type="text" name="slug" maxlength="50" required></li>
+<li>Pub date: <input type="text" name="pub_date" required></li>
<li>Writer: <select name="writer" required>
<option value="" selected>---------</option>
<option value="%s">Bob Woodward</option>
@@ -1185,7 +1185,7 @@ class ModelFormBasicTests(TestCase):
f = RoykoForm(auto_id=False, instance=self.w_royko)
self.assertHTMLEqual(
str(f),
- '''<tr><th>Name:</th><td><input type="text" name="name" value="Mike Royko" maxlength="50" required /><br />
+ '''<tr><th>Name:</th><td><input type="text" name="name" value="Mike Royko" maxlength="50" required><br>
<span class="helptext">Use both first and last names.</span></td></tr>'''
)
@@ -1201,9 +1201,9 @@ class ModelFormBasicTests(TestCase):
f = ArticleForm(auto_id=False, instance=art)
self.assertHTMLEqual(
f.as_ul(),
- '''<li>Headline: <input type="text" name="headline" value="Test article" maxlength="50" required /></li>
-<li>Slug: <input type="text" name="slug" value="test-article" maxlength="50" required /></li>
-<li>Pub date: <input type="text" name="pub_date" value="1988-01-04" required /></li>
+ '''<li>Headline: <input type="text" name="headline" value="Test article" maxlength="50" required></li>
+<li>Slug: <input type="text" name="slug" value="test-article" maxlength="50" required></li>
+<li>Pub date: <input type="text" name="pub_date" value="1988-01-04" required></li>
<li>Writer: <select name="writer" required>
<option value="">---------</option>
<option value="%s">Bob Woodward</option>
@@ -1256,7 +1256,7 @@ class ModelFormBasicTests(TestCase):
self.assertHTMLEqual(
form.as_ul(),
"""<li><label for="id_headline">Headline:</label>
-<input id="id_headline" type="text" name="headline" maxlength="50" required /></li>
+<input id="id_headline" type="text" name="headline" maxlength="50" required></li>
<li><label for="id_categories">Categories:</label>
<select multiple name="categories" id="id_categories">
<option value="%d" selected>Entertainment</option>
@@ -1318,9 +1318,9 @@ class ModelFormBasicTests(TestCase):
f = ArticleForm(auto_id=False)
self.assertHTMLEqual(
str(f),
- '''<tr><th>Headline:</th><td><input type="text" name="headline" maxlength="50" required /></td></tr>
-<tr><th>Slug:</th><td><input type="text" name="slug" maxlength="50" required /></td></tr>
-<tr><th>Pub date:</th><td><input type="text" name="pub_date" required /></td></tr>
+ '''<tr><th>Headline:</th><td><input type="text" name="headline" maxlength="50" required></td></tr>
+<tr><th>Slug:</th><td><input type="text" name="slug" maxlength="50" required></td></tr>
+<tr><th>Pub date:</th><td><input type="text" name="pub_date" required></td></tr>
<tr><th>Writer:</th><td><select name="writer" required>
<option value="" selected>---------</option>
<option value="%s">Bob Woodward</option>
@@ -1348,9 +1348,9 @@ class ModelFormBasicTests(TestCase):
f = ArticleForm(auto_id=False, instance=new_art)
self.assertHTMLEqual(
f.as_ul(),
- '''<li>Headline: <input type="text" name="headline" value="New headline" maxlength="50" required /></li>
-<li>Slug: <input type="text" name="slug" value="new-headline" maxlength="50" required /></li>
-<li>Pub date: <input type="text" name="pub_date" value="1988-01-04" required /></li>
+ '''<li>Headline: <input type="text" name="headline" value="New headline" maxlength="50" required></li>
+<li>Slug: <input type="text" name="slug" value="new-headline" maxlength="50" required></li>
+<li>Pub date: <input type="text" name="pub_date" value="1988-01-04" required></li>
<li>Writer: <select name="writer" required>
<option value="">---------</option>
<option value="%s">Bob Woodward</option>
@@ -1384,8 +1384,8 @@ class ModelFormBasicTests(TestCase):
f = PartialArticleForm(auto_id=False)
self.assertHTMLEqual(
str(f),
- '''<tr><th>Headline:</th><td><input type="text" name="headline" maxlength="50" required /></td></tr>
-<tr><th>Pub date:</th><td><input type="text" name="pub_date" required /></td></tr>''')
+ '''<tr><th>Headline:</th><td><input type="text" name="headline" maxlength="50" required></td></tr>
+<tr><th>Pub date:</th><td><input type="text" name="pub_date" required></td></tr>''')
class PartialArticleFormWithSlug(forms.ModelForm):
class Meta:
@@ -1403,9 +1403,9 @@ class ModelFormBasicTests(TestCase):
}, auto_id=False, instance=art)
self.assertHTMLEqual(
f.as_ul(),
- '''<li>Headline: <input type="text" name="headline" value="New headline" maxlength="50" required /></li>
-<li>Slug: <input type="text" name="slug" value="new-headline" maxlength="50" required /></li>
-<li>Pub date: <input type="text" name="pub_date" value="1988-01-04" required /></li>'''
+ '''<li>Headline: <input type="text" name="headline" value="New headline" maxlength="50" required></li>
+<li>Slug: <input type="text" name="slug" value="new-headline" maxlength="50" required></li>
+<li>Pub date: <input type="text" name="pub_date" value="1988-01-04" required></li>'''
)
self.assertTrue(f.is_valid())
new_art = f.save()
@@ -1492,9 +1492,9 @@ class ModelFormBasicTests(TestCase):
f = ArticleForm(auto_id=False)
self.assertHTMLEqual(
f.as_ul(),
- '''<li>Headline: <input type="text" name="headline" maxlength="50" required /></li>
-<li>Slug: <input type="text" name="slug" maxlength="50" required /></li>
-<li>Pub date: <input type="text" name="pub_date" required /></li>
+ '''<li>Headline: <input type="text" name="headline" maxlength="50" required></li>
+<li>Slug: <input type="text" name="slug" maxlength="50" required></li>
+<li>Pub date: <input type="text" name="pub_date" required></li>
<li>Writer: <select name="writer" required>
<option value="" selected>---------</option>
<option value="%s">Bob Woodward</option>
@@ -1517,9 +1517,9 @@ class ModelFormBasicTests(TestCase):
w_bernstein = Writer.objects.create(name='Carl Bernstein')
self.assertHTMLEqual(
f.as_ul(),
- '''<li>Headline: <input type="text" name="headline" maxlength="50" required /></li>
-<li>Slug: <input type="text" name="slug" maxlength="50" required /></li>
-<li>Pub date: <input type="text" name="pub_date" required /></li>
+ '''<li>Headline: <input type="text" name="headline" maxlength="50" required></li>
+<li>Slug: <input type="text" name="slug" maxlength="50" required></li>
+<li>Pub date: <input type="text" name="pub_date" required></li>
<li>Writer: <select name="writer" required>
<option value="" selected>---------</option>
<option value="%s">Bob Woodward</option>
@@ -1786,9 +1786,9 @@ class ModelChoiceFieldTests(TestCase):
self.assertHTMLEqual(
field.widget.render('name', []),
'''<ul>
-<li><label><input type="checkbox" name="name" value="%d" data-slug="entertainment" />Entertainment</label></li>
-<li><label><input type="checkbox" name="name" value="%d" data-slug="its-test" />It&#39;s a test</label></li>
-<li><label><input type="checkbox" name="name" value="%d" data-slug="third-test" />Third</label></li>
+<li><label><input type="checkbox" name="name" value="%d" data-slug="entertainment">Entertainment</label></li>
+<li><label><input type="checkbox" name="name" value="%d" data-slug="its-test">It&#39;s a test</label></li>
+<li><label><input type="checkbox" name="name" value="%d" data-slug="third-test">Third</label></li>
</ul>''' % (self.c1.pk, self.c2.pk, self.c3.pk),
)
@@ -2059,7 +2059,7 @@ class ModelOneToOneFieldTests(TestCase):
<option value="%s">Bob Woodward</option>
<option value="%s">Mike Royko</option>
</select></p>
-<p><label for="id_age">Age:</label> <input type="number" name="age" id="id_age" min="0" required /></p>''' % (
+<p><label for="id_age">Age:</label> <input type="number" name="age" id="id_age" min="0" required></p>''' % (
self.w_woodward.pk, self.w_royko.pk,
)
)
@@ -2081,7 +2081,7 @@ class ModelOneToOneFieldTests(TestCase):
<option value="%s">Mike Royko</option>
</select></p>
<p><label for="id_age">Age:</label>
-<input type="number" name="age" value="65" id="id_age" min="0" required /></p>''' % (
+<input type="number" name="age" value="65" id="id_age" min="0" required></p>''' % (
self.w_woodward.pk, self.w_royko.pk,
)
)
@@ -2194,7 +2194,7 @@ class FileAndImageFieldTests(TestCase):
form = DocumentForm(instance=doc)
self.assertHTMLEqual(
str(form['myfile']),
- '<input id="id_myfile" name="myfile" type="file" />'
+ '<input id="id_myfile" name="myfile" type="file">'
)
def test_file_field_data(self):
@@ -2569,7 +2569,7 @@ class OtherModelFormTests(TestCase):
f = ModelFormWithMedia()
self.assertHTMLEqual(
str(f.media),
- '''<link href="/some/form/css" type="text/css" media="all" rel="stylesheet" />
+ '''<link href="/some/form/css" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="/some/form/javascript"></script>'''
)
@@ -2644,9 +2644,9 @@ class OtherModelFormTests(TestCase):
self.assertHTMLEqual(
str(CategoryForm()),
'''<tr><th><label for="id_description">Description:</label></th>
-<td><input type="text" name="description" id="id_description" required /></td></tr>
+<td><input type="text" name="description" id="id_description" required></td></tr>
<tr><th><label for="id_url">The URL:</label></th>
-<td><input id="id_url" type="text" name="url" maxlength="40" required /></td></tr>'''
+<td><input id="id_url" type="text" name="url" maxlength="40" required></td></tr>'''
)
# to_field_name should also work on ModelMultipleChoiceField ##################
@@ -2665,7 +2665,7 @@ class OtherModelFormTests(TestCase):
self.assertHTMLEqual(
str(CustomFieldForExclusionForm()),
'''<tr><th><label for="id_name">Name:</label></th>
-<td><input id="id_name" type="text" name="name" maxlength="10" required /></td></tr>'''
+<td><input id="id_name" type="text" name="name" maxlength="10" required></td></tr>'''
)
def test_iterable_model_m2m(self):
@@ -2679,7 +2679,7 @@ class OtherModelFormTests(TestCase):
self.maxDiff = 1024
self.assertHTMLEqual(
form.as_p(),
- """<p><label for="id_name">Name:</label> <input id="id_name" type="text" name="name" maxlength="50" required /></p>
+ """<p><label for="id_name">Name:</label> <input id="id_name" type="text" name="name" maxlength="50" required></p>
<p><label for="id_colours">Colours:</label>
<select multiple name="colours" id="id_colours" required>
<option value="%(blue_pk)s">Blue</option>
@@ -2699,19 +2699,19 @@ class OtherModelFormTests(TestCase):
form.as_p(),
"""
<p><label for="id_title">Title:</label>
- <input id="id_title" maxlength="30" name="title" type="text" required /></p>
+ <input id="id_title" maxlength="30" name="title" type="text" required></p>
<p><label for="id_date_published">Date published:</label>
- <input id="id_date_published" name="date_published" type="text" value="{0}" required />
- <input id="initial-id_date_published" name="initial-date_published" type="hidden" value="{0}" /></p>
+ <input id="id_date_published" name="date_published" type="text" value="{0}" required>
+ <input id="initial-id_date_published" name="initial-date_published" type="hidden" value="{0}"></p>
<p><label for="id_mode">Mode:</label> <select id="id_mode" name="mode">
<option value="di" selected>direct</option>
<option value="de">delayed</option></select>
- <input id="initial-id_mode" name="initial-mode" type="hidden" value="di" /></p>
+ <input id="initial-id_mode" name="initial-mode" type="hidden" value="di"></p>
<p><label for="id_category">Category:</label> <select id="id_category" name="category">
<option value="1">Games</option>
<option value="2">Comics</option>
<option value="3" selected>Novel</option></select>
- <input id="initial-id_category" name="initial-category" type="hidden" value="3" />
+ <input id="initial-id_category" name="initial-category" type="hidden" value="3">
""".format(today_str)
)
empty_data = {
diff --git a/tests/model_formsets/tests.py b/tests/model_formsets/tests.py
index 92d607f7c3..4d00a589ce 100644
--- a/tests/model_formsets/tests.py
+++ b/tests/model_formsets/tests.py
@@ -152,20 +152,20 @@ class ModelFormsetTest(TestCase):
self.assertHTMLEqual(
formset.forms[0].as_p(),
'<p><label for="id_form-0-name">Name:</label>'
- '<input id="id_form-0-name" type="text" name="form-0-name" maxlength="100" />'
- '<input type="hidden" name="form-0-id" id="id_form-0-id" /></p>'
+ '<input id="id_form-0-name" type="text" name="form-0-name" maxlength="100">'
+ '<input type="hidden" name="form-0-id" id="id_form-0-id"></p>'
)
self.assertHTMLEqual(
formset.forms[1].as_p(),
'<p><label for="id_form-1-name">Name:</label>'
- '<input id="id_form-1-name" type="text" name="form-1-name" maxlength="100" />'
- '<input type="hidden" name="form-1-id" id="id_form-1-id" /></p>'
+ '<input id="id_form-1-name" type="text" name="form-1-name" maxlength="100">'
+ '<input type="hidden" name="form-1-id" id="id_form-1-id"></p>'
)
self.assertHTMLEqual(
formset.forms[2].as_p(),
'<p><label for="id_form-2-name">Name:</label>'
- ' <input id="id_form-2-name" type="text" name="form-2-name" maxlength="100" />'
- '<input type="hidden" name="form-2-id" id="id_form-2-id" /></p>'
+ ' <input id="id_form-2-name" type="text" name="form-2-name" maxlength="100">'
+ '<input type="hidden" name="form-2-id" id="id_form-2-id"></p>'
)
data = {
@@ -202,20 +202,20 @@ class ModelFormsetTest(TestCase):
self.assertHTMLEqual(
formset.forms[0].as_p(),
'<p><label for="id_form-0-name">Name:</label>'
- '<input id="id_form-0-name" type="text" name="form-0-name" value="Arthur Rimbaud" maxlength="100" />'
- '<input type="hidden" name="form-0-id" value="%d" id="id_form-0-id" /></p>' % author2.id
+ '<input id="id_form-0-name" type="text" name="form-0-name" value="Arthur Rimbaud" maxlength="100">'
+ '<input type="hidden" name="form-0-id" value="%d" id="id_form-0-id"></p>' % author2.id
)
self.assertHTMLEqual(
formset.forms[1].as_p(),
'<p><label for="id_form-1-name">Name:</label>'
- '<input id="id_form-1-name" type="text" name="form-1-name" value="Charles Baudelaire" maxlength="100" />'
- '<input type="hidden" name="form-1-id" value="%d" id="id_form-1-id" /></p>' % author1.id
+ '<input id="id_form-1-name" type="text" name="form-1-name" value="Charles Baudelaire" maxlength="100">'
+ '<input type="hidden" name="form-1-id" value="%d" id="id_form-1-id"></p>' % author1.id
)
self.assertHTMLEqual(
formset.forms[2].as_p(),
'<p><label for="id_form-2-name">Name:</label>'
- '<input id="id_form-2-name" type="text" name="form-2-name" maxlength="100" />'
- '<input type="hidden" name="form-2-id" id="id_form-2-id" /></p>'
+ '<input id="id_form-2-name" type="text" name="form-2-name" maxlength="100">'
+ '<input type="hidden" name="form-2-id" id="id_form-2-id"></p>'
)
data = {
@@ -253,36 +253,36 @@ class ModelFormsetTest(TestCase):
formset.forms[0].as_p(),
'<p><label for="id_form-0-name">Name:</label>'
'<input id="id_form-0-name" type="text" name="form-0-name" '
- 'value="Arthur Rimbaud" maxlength="100" /></p>'
+ 'value="Arthur Rimbaud" maxlength="100"></p>'
'<p><label for="id_form-0-DELETE">Delete:</label>'
- '<input type="checkbox" name="form-0-DELETE" id="id_form-0-DELETE" />'
- '<input type="hidden" name="form-0-id" value="%d" id="id_form-0-id" /></p>' % author2.id
+ '<input type="checkbox" name="form-0-DELETE" id="id_form-0-DELETE">'
+ '<input type="hidden" name="form-0-id" value="%d" id="id_form-0-id"></p>' % author2.id
)
self.assertHTMLEqual(
formset.forms[1].as_p(),
'<p><label for="id_form-1-name">Name:</label>'
'<input id="id_form-1-name" type="text" name="form-1-name" '
- 'value="Charles Baudelaire" maxlength="100" /></p>'
+ 'value="Charles Baudelaire" maxlength="100"></p>'
'<p><label for="id_form-1-DELETE">Delete:</label>'
- '<input type="checkbox" name="form-1-DELETE" id="id_form-1-DELETE" />'
- '<input type="hidden" name="form-1-id" value="%d" id="id_form-1-id" /></p>' % author1.id
+ '<input type="checkbox" name="form-1-DELETE" id="id_form-1-DELETE">'
+ '<input type="hidden" name="form-1-id" value="%d" id="id_form-1-id"></p>' % author1.id
)
self.assertHTMLEqual(
formset.forms[2].as_p(),
'<p><label for="id_form-2-name">Name:</label>'
'<input id="id_form-2-name" type="text" name="form-2-name" '
- 'value="Paul Verlaine" maxlength="100" /></p>'
+ 'value="Paul Verlaine" maxlength="100"></p>'
'<p><label for="id_form-2-DELETE">Delete:</label>'
- '<input type="checkbox" name="form-2-DELETE" id="id_form-2-DELETE" />'
- '<input type="hidden" name="form-2-id" value="%d" id="id_form-2-id" /></p>' % author3.id
+ '<input type="checkbox" name="form-2-DELETE" id="id_form-2-DELETE">'
+ '<input type="hidden" name="form-2-id" value="%d" id="id_form-2-id"></p>' % author3.id
)
self.assertHTMLEqual(
formset.forms[3].as_p(),
'<p><label for="id_form-3-name">Name:</label>'
- '<input id="id_form-3-name" type="text" name="form-3-name" maxlength="100" /></p>'
+ '<input id="id_form-3-name" type="text" name="form-3-name" maxlength="100"></p>'
'<p><label for="id_form-3-DELETE">Delete:</label>'
- '<input type="checkbox" name="form-3-DELETE" id="id_form-3-DELETE" />'
- '<input type="hidden" name="form-3-id" id="id_form-3-id" /></p>'
+ '<input type="checkbox" name="form-3-DELETE" id="id_form-3-DELETE">'
+ '<input type="hidden" name="form-3-id" id="id_form-3-id"></p>'
)
data = {
@@ -528,10 +528,10 @@ class ModelFormsetTest(TestCase):
self.assertHTMLEqual(
formset.forms[0].as_p(),
'<p><label for="id_form-0-name">Name:</label>'
- '<input id="id_form-0-name" type="text" name="form-0-name" maxlength="100" /></p>'
+ '<input id="id_form-0-name" type="text" name="form-0-name" maxlength="100"></p>'
'<p><label for="id_form-0-write_speed">Write speed:</label>'
- '<input type="number" name="form-0-write_speed" id="id_form-0-write_speed" />'
- '<input type="hidden" name="form-0-author_ptr" id="id_form-0-author_ptr" /></p>'
+ '<input type="number" name="form-0-write_speed" id="id_form-0-write_speed">'
+ '<input type="hidden" name="form-0-author_ptr" id="id_form-0-author_ptr"></p>'
)
data = {
@@ -556,18 +556,18 @@ class ModelFormsetTest(TestCase):
self.assertHTMLEqual(
formset.forms[0].as_p(),
'<p><label for="id_form-0-name">Name:</label>'
- '<input id="id_form-0-name" type="text" name="form-0-name" value="Ernest Hemingway" maxlength="100" /></p>'
+ '<input id="id_form-0-name" type="text" name="form-0-name" value="Ernest Hemingway" maxlength="100"></p>'
'<p><label for="id_form-0-write_speed">Write speed:</label>'
- '<input type="number" name="form-0-write_speed" value="10" id="id_form-0-write_speed" />'
- '<input type="hidden" name="form-0-author_ptr" value="%d" id="id_form-0-author_ptr" /></p>' % hemingway_id
+ '<input type="number" name="form-0-write_speed" value="10" id="id_form-0-write_speed">'
+ '<input type="hidden" name="form-0-author_ptr" value="%d" id="id_form-0-author_ptr"></p>' % hemingway_id
)
self.assertHTMLEqual(
formset.forms[1].as_p(),
'<p><label for="id_form-1-name">Name:</label>'
- '<input id="id_form-1-name" type="text" name="form-1-name" maxlength="100" /></p>'
+ '<input id="id_form-1-name" type="text" name="form-1-name" maxlength="100"></p>'
'<p><label for="id_form-1-write_speed">Write speed:</label>'
- '<input type="number" name="form-1-write_speed" id="id_form-1-write_speed" />'
- '<input type="hidden" name="form-1-author_ptr" id="id_form-1-author_ptr" /></p>'
+ '<input type="number" name="form-1-write_speed" id="id_form-1-write_speed">'
+ '<input type="hidden" name="form-1-author_ptr" id="id_form-1-author_ptr"></p>'
)
data = {
@@ -598,23 +598,23 @@ class ModelFormsetTest(TestCase):
self.assertHTMLEqual(
formset.forms[0].as_p(),
'<p><label for="id_book_set-0-title">Title:</label> <input id="id_book_set-0-title" type="text" '
- 'name="book_set-0-title" maxlength="100" /><input type="hidden" name="book_set-0-author" value="%d" '
- 'id="id_book_set-0-author" /><input type="hidden" name="book_set-0-id" id="id_book_set-0-id" />'
+ 'name="book_set-0-title" maxlength="100"><input type="hidden" name="book_set-0-author" value="%d" '
+ 'id="id_book_set-0-author"><input type="hidden" name="book_set-0-id" id="id_book_set-0-id">'
'</p>' % author.id
)
self.assertHTMLEqual(
formset.forms[1].as_p(),
'<p><label for="id_book_set-1-title">Title:</label>'
- '<input id="id_book_set-1-title" type="text" name="book_set-1-title" maxlength="100" />'
- '<input type="hidden" name="book_set-1-author" value="%d" id="id_book_set-1-author" />'
- '<input type="hidden" name="book_set-1-id" id="id_book_set-1-id" /></p>' % author.id
+ '<input id="id_book_set-1-title" type="text" name="book_set-1-title" maxlength="100">'
+ '<input type="hidden" name="book_set-1-author" value="%d" id="id_book_set-1-author">'
+ '<input type="hidden" name="book_set-1-id" id="id_book_set-1-id"></p>' % author.id
)
self.assertHTMLEqual(
formset.forms[2].as_p(),
'<p><label for="id_book_set-2-title">Title:</label>'
- '<input id="id_book_set-2-title" type="text" name="book_set-2-title" maxlength="100" />'
- '<input type="hidden" name="book_set-2-author" value="%d" id="id_book_set-2-author" />'
- '<input type="hidden" name="book_set-2-id" id="id_book_set-2-id" /></p>' % author.id
+ '<input id="id_book_set-2-title" type="text" name="book_set-2-title" maxlength="100">'
+ '<input type="hidden" name="book_set-2-author" value="%d" id="id_book_set-2-author">'
+ '<input type="hidden" name="book_set-2-id" id="id_book_set-2-id"></p>' % author.id
)
data = {
@@ -648,25 +648,25 @@ class ModelFormsetTest(TestCase):
formset.forms[0].as_p(),
'<p><label for="id_book_set-0-title">Title:</label>'
'<input id="id_book_set-0-title" type="text" name="book_set-0-title" '
- 'value="Les Fleurs du Mal" maxlength="100" />'
- '<input type="hidden" name="book_set-0-author" value="%d" id="id_book_set-0-author" />'
- '<input type="hidden" name="book_set-0-id" value="%d" id="id_book_set-0-id" /></p>' % (
+ 'value="Les Fleurs du Mal" maxlength="100">'
+ '<input type="hidden" name="book_set-0-author" value="%d" id="id_book_set-0-author">'
+ '<input type="hidden" name="book_set-0-id" value="%d" id="id_book_set-0-id"></p>' % (
author.id, book1.id,
)
)
self.assertHTMLEqual(
formset.forms[1].as_p(),
'<p><label for="id_book_set-1-title">Title:</label>'
- '<input id="id_book_set-1-title" type="text" name="book_set-1-title" maxlength="100" />'
- '<input type="hidden" name="book_set-1-author" value="%d" id="id_book_set-1-author" />'
- '<input type="hidden" name="book_set-1-id" id="id_book_set-1-id" /></p>' % author.id
+ '<input id="id_book_set-1-title" type="text" name="book_set-1-title" maxlength="100">'
+ '<input type="hidden" name="book_set-1-author" value="%d" id="id_book_set-1-author">'
+ '<input type="hidden" name="book_set-1-id" id="id_book_set-1-id"></p>' % author.id
)
self.assertHTMLEqual(
formset.forms[2].as_p(),
'<p><label for="id_book_set-2-title">Title:</label>'
- '<input id="id_book_set-2-title" type="text" name="book_set-2-title" maxlength="100" />'
- '<input type="hidden" name="book_set-2-author" value="%d" id="id_book_set-2-author" />'
- '<input type="hidden" name="book_set-2-id" id="id_book_set-2-id" /></p>' % author.id
+ '<input id="id_book_set-2-title" type="text" name="book_set-2-title" maxlength="100">'
+ '<input type="hidden" name="book_set-2-author" value="%d" id="id_book_set-2-author">'
+ '<input type="hidden" name="book_set-2-id" id="id_book_set-2-id"></p>' % author.id
)
data = {
@@ -733,17 +733,17 @@ class ModelFormsetTest(TestCase):
self.assertHTMLEqual(
formset.forms[0].as_p(),
'<p><label for="id_test-0-title">Title:</label>'
- '<input id="id_test-0-title" type="text" name="test-0-title" maxlength="100" />'
- '<input type="hidden" name="test-0-author" id="id_test-0-author" />'
- '<input type="hidden" name="test-0-id" id="id_test-0-id" /></p>'
+ '<input id="id_test-0-title" type="text" name="test-0-title" maxlength="100">'
+ '<input type="hidden" name="test-0-author" id="id_test-0-author">'
+ '<input type="hidden" name="test-0-id" id="id_test-0-id"></p>'
)
self.assertHTMLEqual(
formset.forms[1].as_p(),
'<p><label for="id_test-1-title">Title:</label>'
- '<input id="id_test-1-title" type="text" name="test-1-title" maxlength="100" />'
- '<input type="hidden" name="test-1-author" id="id_test-1-author" />'
- '<input type="hidden" name="test-1-id" id="id_test-1-id" /></p>'
+ '<input id="id_test-1-title" type="text" name="test-1-title" maxlength="100">'
+ '<input type="hidden" name="test-1-author" id="id_test-1-author">'
+ '<input type="hidden" name="test-1-id" id="id_test-1-id"></p>'
)
def test_inline_formsets_with_custom_pk(self):
@@ -762,12 +762,12 @@ class ModelFormsetTest(TestCase):
formset.forms[0].as_p(),
'<p><label for="id_bookwithcustompk_set-0-my_pk">My pk:</label>'
'<input id="id_bookwithcustompk_set-0-my_pk" type="number" '
- 'name="bookwithcustompk_set-0-my_pk" step="1" /></p>'
+ 'name="bookwithcustompk_set-0-my_pk" step="1"></p>'
'<p><label for="id_bookwithcustompk_set-0-title">Title:</label>'
'<input id="id_bookwithcustompk_set-0-title" type="text" '
- 'name="bookwithcustompk_set-0-title" maxlength="100" />'
+ 'name="bookwithcustompk_set-0-title" maxlength="100">'
'<input type="hidden" name="bookwithcustompk_set-0-author" '
- 'value="1" id="id_bookwithcustompk_set-0-author" /></p>'
+ 'value="1" id="id_bookwithcustompk_set-0-author"></p>'
)
data = {
@@ -802,14 +802,14 @@ class ModelFormsetTest(TestCase):
formset.forms[0].as_p(),
'<p><label for="id_alternatebook_set-0-title">Title:</label>'
'<input id="id_alternatebook_set-0-title" type="text" '
- 'name="alternatebook_set-0-title" maxlength="100" /></p>'
+ 'name="alternatebook_set-0-title" maxlength="100"></p>'
'<p><label for="id_alternatebook_set-0-notes">Notes:</label>'
'<input id="id_alternatebook_set-0-notes" type="text" '
- 'name="alternatebook_set-0-notes" maxlength="100" />'
+ 'name="alternatebook_set-0-notes" maxlength="100">'
'<input type="hidden" name="alternatebook_set-0-author" value="1" '
- 'id="id_alternatebook_set-0-author" />'
+ 'id="id_alternatebook_set-0-author">'
'<input type="hidden" name="alternatebook_set-0-book_ptr" '
- 'id="id_alternatebook_set-0-book_ptr" /></p>'
+ 'id="id_alternatebook_set-0-book_ptr"></p>'
)
data = {
@@ -905,39 +905,39 @@ class ModelFormsetTest(TestCase):
formset.forms[0].as_p(),
'<p><label for="id_book_set-0-title">Title:</label>'
'<input id="id_book_set-0-title" type="text" name="book_set-0-title" '
- 'value="Les Paradis Artificiels" maxlength="100" />'
- '<input type="hidden" name="book_set-0-author" value="1" id="id_book_set-0-author" />'
- '<input type="hidden" name="book_set-0-id" value="1" id="id_book_set-0-id" /></p>'
+ 'value="Les Paradis Artificiels" maxlength="100">'
+ '<input type="hidden" name="book_set-0-author" value="1" id="id_book_set-0-author">'
+ '<input type="hidden" name="book_set-0-id" value="1" id="id_book_set-0-id"></p>'
)
self.assertHTMLEqual(
formset.forms[1].as_p(),
'<p><label for="id_book_set-1-title">Title:</label>'
'<input id="id_book_set-1-title" type="text" name="book_set-1-title" '
- 'value="Les Fleurs du Mal" maxlength="100" />'
- '<input type="hidden" name="book_set-1-author" value="1" id="id_book_set-1-author" />'
- '<input type="hidden" name="book_set-1-id" value="2" id="id_book_set-1-id" /></p>'
+ 'value="Les Fleurs du Mal" maxlength="100">'
+ '<input type="hidden" name="book_set-1-author" value="1" id="id_book_set-1-author">'
+ '<input type="hidden" name="book_set-1-id" value="2" id="id_book_set-1-id"></p>'
)
self.assertHTMLEqual(
formset.forms[2].as_p(),
'<p><label for="id_book_set-2-title">Title:</label>'
'<input id="id_book_set-2-title" type="text" name="book_set-2-title" '
- 'value="Flowers of Evil" maxlength="100" />'
- '<input type="hidden" name="book_set-2-author" value="1" id="id_book_set-2-author" />'
- '<input type="hidden" name="book_set-2-id" value="3" id="id_book_set-2-id" /></p>'
+ 'value="Flowers of Evil" maxlength="100">'
+ '<input type="hidden" name="book_set-2-author" value="1" id="id_book_set-2-author">'
+ '<input type="hidden" name="book_set-2-id" value="3" id="id_book_set-2-id"></p>'
)
self.assertHTMLEqual(
formset.forms[3].as_p(),
'<p><label for="id_book_set-3-title">Title:</label>'
- '<input id="id_book_set-3-title" type="text" name="book_set-3-title" maxlength="100" />'
- '<input type="hidden" name="book_set-3-author" value="1" id="id_book_set-3-author" />'
- '<input type="hidden" name="book_set-3-id" id="id_book_set-3-id" /></p>'
+ '<input id="id_book_set-3-title" type="text" name="book_set-3-title" maxlength="100">'
+ '<input type="hidden" name="book_set-3-author" value="1" id="id_book_set-3-author">'
+ '<input type="hidden" name="book_set-3-id" id="id_book_set-3-id"></p>'
)
self.assertHTMLEqual(
formset.forms[4].as_p(),
'<p><label for="id_book_set-4-title">Title:</label>'
- '<input id="id_book_set-4-title" type="text" name="book_set-4-title" maxlength="100" />'
- '<input type="hidden" name="book_set-4-author" value="1" id="id_book_set-4-author" />'
- '<input type="hidden" name="book_set-4-id" id="id_book_set-4-id" /></p>'
+ '<input id="id_book_set-4-title" type="text" name="book_set-4-title" maxlength="100">'
+ '<input type="hidden" name="book_set-4-author" value="1" id="id_book_set-4-author">'
+ '<input type="hidden" name="book_set-4-id" id="id_book_set-4-id"></p>'
)
data = {
@@ -962,23 +962,23 @@ class ModelFormsetTest(TestCase):
formset.forms[0].as_p(),
'<p><label for="id_book_set-0-title">Title:</label>'
'<input id="id_book_set-0-title" type="text" name="book_set-0-title" '
- 'value="Flowers of Evil" maxlength="100" />'
- '<input type="hidden" name="book_set-0-author" value="1" id="id_book_set-0-author" />'
- '<input type="hidden" name="book_set-0-id" value="3" id="id_book_set-0-id" /></p>'
+ 'value="Flowers of Evil" maxlength="100">'
+ '<input type="hidden" name="book_set-0-author" value="1" id="id_book_set-0-author">'
+ '<input type="hidden" name="book_set-0-id" value="3" id="id_book_set-0-id"></p>'
)
self.assertHTMLEqual(
formset.forms[1].as_p(),
'<p><label for="id_book_set-1-title">Title:</label>'
- '<input id="id_book_set-1-title" type="text" name="book_set-1-title" maxlength="100" />'
- '<input type="hidden" name="book_set-1-author" value="1" id="id_book_set-1-author" />'
- '<input type="hidden" name="book_set-1-id" id="id_book_set-1-id" /></p>'
+ '<input id="id_book_set-1-title" type="text" name="book_set-1-title" maxlength="100">'
+ '<input type="hidden" name="book_set-1-author" value="1" id="id_book_set-1-author">'
+ '<input type="hidden" name="book_set-1-id" id="id_book_set-1-id"></p>'
)
self.assertHTMLEqual(
formset.forms[2].as_p(),
'<p><label for="id_book_set-2-title">Title:</label>'
- '<input id="id_book_set-2-title" type="text" name="book_set-2-title" maxlength="100" />'
- '<input type="hidden" name="book_set-2-author" value="1" id="id_book_set-2-author" />'
- '<input type="hidden" name="book_set-2-id" id="id_book_set-2-id" /></p>'
+ '<input id="id_book_set-2-title" type="text" name="book_set-2-title" maxlength="100">'
+ '<input type="hidden" name="book_set-2-author" value="1" id="id_book_set-2-author">'
+ '<input type="hidden" name="book_set-2-id" id="id_book_set-2-id"></p>'
)
data = {
@@ -1040,9 +1040,9 @@ class ModelFormsetTest(TestCase):
self.assertHTMLEqual(
formset.forms[0].as_p(),
'<p><label for="id_form-0-my_pk">My pk:</label> <input id="id_form-0-my_pk" type="text" '
- 'name="form-0-my_pk" maxlength="10" /></p>'
+ 'name="form-0-my_pk" maxlength="10"></p>'
'<p><label for="id_form-0-some_field">Some field:</label>'
- '<input id="id_form-0-some_field" type="text" name="form-0-some_field" maxlength="100" /></p>'
+ '<input id="id_form-0-some_field" type="text" name="form-0-some_field" maxlength="100"></p>'
)
# Custom primary keys with ForeignKey, OneToOneField and AutoField ############
@@ -1055,16 +1055,16 @@ class ModelFormsetTest(TestCase):
self.assertHTMLEqual(
formset.forms[0].as_p(),
'<p><label for="id_owner_set-0-name">Name:</label>'
- '<input id="id_owner_set-0-name" type="text" name="owner_set-0-name" maxlength="100" />'
- '<input type="hidden" name="owner_set-0-place" value="1" id="id_owner_set-0-place" />'
- '<input type="hidden" name="owner_set-0-auto_id" id="id_owner_set-0-auto_id" /></p>'
+ '<input id="id_owner_set-0-name" type="text" name="owner_set-0-name" maxlength="100">'
+ '<input type="hidden" name="owner_set-0-place" value="1" id="id_owner_set-0-place">'
+ '<input type="hidden" name="owner_set-0-auto_id" id="id_owner_set-0-auto_id"></p>'
)
self.assertHTMLEqual(
formset.forms[1].as_p(),
'<p><label for="id_owner_set-1-name">Name:</label>'
- '<input id="id_owner_set-1-name" type="text" name="owner_set-1-name" maxlength="100" />'
- '<input type="hidden" name="owner_set-1-place" value="1" id="id_owner_set-1-place" />'
- '<input type="hidden" name="owner_set-1-auto_id" id="id_owner_set-1-auto_id" /></p>'
+ '<input id="id_owner_set-1-name" type="text" name="owner_set-1-name" maxlength="100">'
+ '<input type="hidden" name="owner_set-1-place" value="1" id="id_owner_set-1-place">'
+ '<input type="hidden" name="owner_set-1-auto_id" id="id_owner_set-1-auto_id"></p>'
)
data = {
@@ -1089,24 +1089,24 @@ class ModelFormsetTest(TestCase):
self.assertHTMLEqual(
formset.forms[0].as_p(),
'<p><label for="id_owner_set-0-name">Name:</label>'
- '<input id="id_owner_set-0-name" type="text" name="owner_set-0-name" value="Joe Perry" maxlength="100" />'
- '<input type="hidden" name="owner_set-0-place" value="1" id="id_owner_set-0-place" />'
- '<input type="hidden" name="owner_set-0-auto_id" value="%d" id="id_owner_set-0-auto_id" /></p>'
+ '<input id="id_owner_set-0-name" type="text" name="owner_set-0-name" value="Joe Perry" maxlength="100">'
+ '<input type="hidden" name="owner_set-0-place" value="1" id="id_owner_set-0-place">'
+ '<input type="hidden" name="owner_set-0-auto_id" value="%d" id="id_owner_set-0-auto_id"></p>'
% owner1.auto_id
)
self.assertHTMLEqual(
formset.forms[1].as_p(),
'<p><label for="id_owner_set-1-name">Name:</label>'
- '<input id="id_owner_set-1-name" type="text" name="owner_set-1-name" maxlength="100" />'
- '<input type="hidden" name="owner_set-1-place" value="1" id="id_owner_set-1-place" />'
- '<input type="hidden" name="owner_set-1-auto_id" id="id_owner_set-1-auto_id" /></p>'
+ '<input id="id_owner_set-1-name" type="text" name="owner_set-1-name" maxlength="100">'
+ '<input type="hidden" name="owner_set-1-place" value="1" id="id_owner_set-1-place">'
+ '<input type="hidden" name="owner_set-1-auto_id" id="id_owner_set-1-auto_id"></p>'
)
self.assertHTMLEqual(
formset.forms[2].as_p(),
'<p><label for="id_owner_set-2-name">Name:</label>'
- '<input id="id_owner_set-2-name" type="text" name="owner_set-2-name" maxlength="100" />'
- '<input type="hidden" name="owner_set-2-place" value="1" id="id_owner_set-2-place" />'
- '<input type="hidden" name="owner_set-2-auto_id" id="id_owner_set-2-auto_id" /></p>'
+ '<input id="id_owner_set-2-name" type="text" name="owner_set-2-name" maxlength="100">'
+ '<input type="hidden" name="owner_set-2-place" value="1" id="id_owner_set-2-place">'
+ '<input type="hidden" name="owner_set-2-auto_id" id="id_owner_set-2-auto_id"></p>'
)
data = {
@@ -1141,7 +1141,7 @@ class ModelFormsetTest(TestCase):
'<option value="%d">Jack Berry at Giordanos</option>'
'</select></p>'
'<p><label for="id_form-0-age">Age:</label>'
- '<input type="number" name="form-0-age" id="id_form-0-age" min="0" /></p>'
+ '<input type="number" name="form-0-age" id="id_form-0-age" min="0"></p>'
% (owner1.auto_id, owner2.auto_id)
)
@@ -1154,8 +1154,8 @@ class ModelFormsetTest(TestCase):
self.assertHTMLEqual(
formset.forms[0].as_p(),
'<p><label for="id_ownerprofile-0-age">Age:</label>'
- '<input type="number" name="ownerprofile-0-age" id="id_ownerprofile-0-age" min="0" />'
- '<input type="hidden" name="ownerprofile-0-owner" value="%d" id="id_ownerprofile-0-owner" /></p>'
+ '<input type="number" name="ownerprofile-0-age" id="id_ownerprofile-0-age" min="0">'
+ '<input type="hidden" name="ownerprofile-0-owner" value="%d" id="id_ownerprofile-0-owner"></p>'
% owner1.auto_id
)
@@ -1179,8 +1179,8 @@ class ModelFormsetTest(TestCase):
self.assertHTMLEqual(
formset.forms[0].as_p(),
'<p><label for="id_ownerprofile-0-age">Age:</label>'
- '<input type="number" name="ownerprofile-0-age" value="54" id="id_ownerprofile-0-age" min="0" />'
- '<input type="hidden" name="ownerprofile-0-owner" value="%d" id="id_ownerprofile-0-owner" /></p>'
+ '<input type="number" name="ownerprofile-0-age" value="54" id="id_ownerprofile-0-age" min="0">'
+ '<input type="hidden" name="ownerprofile-0-owner" value="%d" id="id_ownerprofile-0-owner"></p>'
% owner1.auto_id
)
@@ -1212,11 +1212,11 @@ class ModelFormsetTest(TestCase):
self.assertHTMLEqual(
formset.forms[0].as_p(),
'<p><label for="id_location_set-0-lat">Lat:</label>'
- '<input id="id_location_set-0-lat" type="text" name="location_set-0-lat" maxlength="100" /></p>'
+ '<input id="id_location_set-0-lat" type="text" name="location_set-0-lat" maxlength="100"></p>'
'<p><label for="id_location_set-0-lon">Lon:</label> '
- '<input id="id_location_set-0-lon" type="text" name="location_set-0-lon" maxlength="100" />'
- '<input type="hidden" name="location_set-0-place" value="1" id="id_location_set-0-place" />'
- '<input type="hidden" name="location_set-0-id" id="id_location_set-0-id" /></p>'
+ '<input id="id_location_set-0-lon" type="text" name="location_set-0-lon" maxlength="100">'
+ '<input type="hidden" name="location_set-0-place" value="1" id="id_location_set-0-place">'
+ '<input type="hidden" name="location_set-0-id" id="id_location_set-0-id"></p>'
)
def test_foreign_keys_in_parents(self):
@@ -1372,13 +1372,13 @@ class ModelFormsetTest(TestCase):
result,
'<p><label for="id_membership_set-0-date_joined">Date joined:</label>'
'<input type="text" name="membership_set-0-date_joined" '
- 'value="__DATETIME__" id="id_membership_set-0-date_joined" />'
+ 'value="__DATETIME__" id="id_membership_set-0-date_joined">'
'<input type="hidden" name="initial-membership_set-0-date_joined" value="__DATETIME__" '
- 'id="initial-membership_set-0-id_membership_set-0-date_joined" /></p>'
+ 'id="initial-membership_set-0-id_membership_set-0-date_joined"></p>'
'<p><label for="id_membership_set-0-karma">Karma:</label>'
- '<input type="number" name="membership_set-0-karma" id="id_membership_set-0-karma" />'
- '<input type="hidden" name="membership_set-0-person" value="%d" id="id_membership_set-0-person" />'
- '<input type="hidden" name="membership_set-0-id" id="id_membership_set-0-id" /></p>'
+ '<input type="number" name="membership_set-0-karma" id="id_membership_set-0-karma">'
+ '<input type="hidden" name="membership_set-0-person" value="%d" id="id_membership_set-0-person">'
+ '<input type="hidden" name="membership_set-0-id" id="id_membership_set-0-id"></p>'
% person.id)
# test for validation with callable defaults. Validations rely on hidden fields
@@ -1724,7 +1724,7 @@ class TestModelFormsetOverridesTroughFormMeta(TestCase):
form = PoetFormSet.form()
self.assertHTMLEqual(
"%s" % form['name'],
- '<input id="id_name" maxlength="100" type="text" class="poet" name="name" required />'
+ '<input id="id_name" maxlength="100" type="text" class="poet" name="name" required>'
)
def test_inlineformset_factory_widgets(self):
@@ -1735,7 +1735,7 @@ class TestModelFormsetOverridesTroughFormMeta(TestCase):
form = BookFormSet.form()
self.assertHTMLEqual(
"%s" % form['title'],
- '<input class="book" id="id_title" maxlength="100" name="title" type="text" required />'
+ '<input class="book" id="id_title" maxlength="100" name="title" type="text" required>'
)
def test_modelformset_factory_labels_overrides(self):
diff --git a/tests/postgres_tests/test_array.py b/tests/postgres_tests/test_array.py
index e2ad3e8dcc..4776bda934 100644
--- a/tests/postgres_tests/test_array.py
+++ b/tests/postgres_tests/test_array.py
@@ -805,9 +805,9 @@ class TestSplitFormField(PostgreSQLTestCase):
<tr>
<th><label for="id_array_0">Array:</label></th>
<td>
- <input id="id_array_0" name="array_0" type="text" required />
- <input id="id_array_1" name="array_1" type="text" required />
- <input id="id_array_2" name="array_2" type="text" required />
+ <input id="id_array_0" name="array_0" type="text" required>
+ <input id="id_array_1" name="array_1" type="text" required>
+ <input id="id_array_2" name="array_2" type="text" required>
</td>
</tr>
''')
@@ -876,8 +876,8 @@ class TestSplitFormWidget(PostgreSQLWidgetTestCase):
self.check_html(
SplitArrayWidget(forms.TextInput(), size=2), 'array', None,
"""
- <input name="array_0" type="text" />
- <input name="array_1" type="text" />
+ <input name="array_0" type="text">
+ <input name="array_1" type="text">
"""
)
@@ -887,8 +887,8 @@ class TestSplitFormWidget(PostgreSQLWidgetTestCase):
'array', ['val1', 'val2'], attrs={'id': 'foo'},
html=(
"""
- <input id="foo_0" name="array_0" type="text" value="val1" />
- <input id="foo_1" name="array_1" type="text" value="val2" />
+ <input id="foo_0" name="array_0" type="text" value="val1">
+ <input id="foo_1" name="array_1" type="text" value="val2">
"""
)
)
diff --git a/tests/postgres_tests/test_ranges.py b/tests/postgres_tests/test_ranges.py
index 923e43b0ea..6aa6c889dd 100644
--- a/tests/postgres_tests/test_ranges.py
+++ b/tests/postgres_tests/test_ranges.py
@@ -468,10 +468,10 @@ class TestFormField(PostgreSQLTestCase):
<label for="id_field_0">Field:</label>
</th>
<td>
- <input id="id_field_0_0" name="field_0_0" type="text" />
- <input id="id_field_0_1" name="field_0_1" type="text" />
- <input id="id_field_1_0" name="field_1_0" type="text" />
- <input id="id_field_1_1" name="field_1_1" type="text" />
+ <input id="id_field_0_0" name="field_0_0" type="text">
+ <input id="id_field_0_1" name="field_0_1" type="text">
+ <input id="id_field_1_0" name="field_1_0" type="text">
+ <input id="id_field_1_1" name="field_1_1" type="text">
</td>
</tr>
''')
@@ -499,8 +499,8 @@ class TestFormField(PostgreSQLTestCase):
<tr>
<th><label for="id_ints_0">Ints:</label></th>
<td>
- <input id="id_ints_0" name="ints_0" type="number" />
- <input id="id_ints_1" name="ints_1" type="number" />
+ <input id="id_ints_0" name="ints_0" type="number">
+ <input id="id_ints_1" name="ints_1" type="number">
</td>
</tr>
''')
@@ -700,11 +700,11 @@ class TestWidget(PostgreSQLTestCase):
f = pg_forms.ranges.DateTimeRangeField()
self.assertHTMLEqual(
f.widget.render('datetimerange', ''),
- '<input type="text" name="datetimerange_0" /><input type="text" name="datetimerange_1" />'
+ '<input type="text" name="datetimerange_0"><input type="text" name="datetimerange_1">'
)
self.assertHTMLEqual(
f.widget.render('datetimerange', None),
- '<input type="text" name="datetimerange_0" /><input type="text" name="datetimerange_1" />'
+ '<input type="text" name="datetimerange_0"><input type="text" name="datetimerange_1">'
)
dt_range = DateTimeTZRange(
datetime.datetime(2006, 1, 10, 7, 30),
@@ -712,6 +712,6 @@ class TestWidget(PostgreSQLTestCase):
)
self.assertHTMLEqual(
f.widget.render('datetimerange', dt_range),
- '<input type="text" name="datetimerange_0" value="2006-01-10 07:30:00" />'
- '<input type="text" name="datetimerange_1" value="2006-02-12 09:50:00" />'
+ '<input type="text" name="datetimerange_0" value="2006-01-10 07:30:00">'
+ '<input type="text" name="datetimerange_1" value="2006-02-12 09:50:00">'
)
diff --git a/tests/staticfiles_tests/test_forms.py b/tests/staticfiles_tests/test_forms.py
index ec9f069ed8..c5dc66de61 100644
--- a/tests/staticfiles_tests/test_forms.py
+++ b/tests/staticfiles_tests/test_forms.py
@@ -29,8 +29,8 @@ class StaticFilesFormsMediaTestCase(SimpleTestCase):
)
self.assertEqual(
str(m),
- """<link href="https://example.com/assets/path/to/css1" type="text/css" media="all" rel="stylesheet" />
-<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" />
+ """<link href="https://example.com/assets/path/to/css1" type="text/css" media="all" rel="stylesheet">
+<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet">
<script type="text/javascript" src="/path/to/js1"></script>
<script type="text/javascript" src="http://media.other.com/path/to/js2"></script>
<script type="text/javascript" src="https://secure.other.com/path/to/js3"></script>
diff --git a/tests/template_backends/test_dummy.py b/tests/template_backends/test_dummy.py
index 92861c24da..24c30c97e3 100644
--- a/tests/template_backends/test_dummy.py
+++ b/tests/template_backends/test_dummy.py
@@ -81,7 +81,7 @@ class TemplateStringsTests(SimpleTestCase):
template = self.engine.get_template('template_backends/csrf.html')
content = template.render(request=request)
- expected = '<input type="hidden" name="csrfmiddlewaretoken" value="([^"]+)" />'
+ expected = '<input type="hidden" name="csrfmiddlewaretoken" value="([^"]+)">'
match = re.match(expected, content) or re.match(expected.replace('"', "'"), content)
self.assertTrue(match, "hidden csrftoken field not found in output")
self.assertTrue(equivalent_tokens(match.group(1), get_token(request)))
diff --git a/tests/template_tests/filter_tests/test_linebreaks.py b/tests/template_tests/filter_tests/test_linebreaks.py
index 0f3cd7a117..8fdb91f377 100644
--- a/tests/template_tests/filter_tests/test_linebreaks.py
+++ b/tests/template_tests/filter_tests/test_linebreaks.py
@@ -15,12 +15,12 @@ class LinebreaksTests(SimpleTestCase):
@setup({'linebreaks01': '{{ a|linebreaks }} {{ b|linebreaks }}'})
def test_linebreaks01(self):
output = self.engine.render_to_string('linebreaks01', {"a": "x&\ny", "b": mark_safe("x&\ny")})
- self.assertEqual(output, "<p>x&amp;<br />y</p> <p>x&<br />y</p>")
+ self.assertEqual(output, "<p>x&amp;<br>y</p> <p>x&<br>y</p>")
@setup({'linebreaks02': '{% autoescape off %}{{ a|linebreaks }} {{ b|linebreaks }}{% endautoescape %}'})
def test_linebreaks02(self):
output = self.engine.render_to_string('linebreaks02', {"a": "x&\ny", "b": mark_safe("x&\ny")})
- self.assertEqual(output, "<p>x&<br />y</p> <p>x&<br />y</p>")
+ self.assertEqual(output, "<p>x&<br>y</p> <p>x&<br>y</p>")
class FunctionTests(SimpleTestCase):
@@ -29,13 +29,13 @@ class FunctionTests(SimpleTestCase):
self.assertEqual(linebreaks_filter('line 1'), '<p>line 1</p>')
def test_newline(self):
- self.assertEqual(linebreaks_filter('line 1\nline 2'), '<p>line 1<br />line 2</p>')
+ self.assertEqual(linebreaks_filter('line 1\nline 2'), '<p>line 1<br>line 2</p>')
def test_carriage(self):
- self.assertEqual(linebreaks_filter('line 1\rline 2'), '<p>line 1<br />line 2</p>')
+ self.assertEqual(linebreaks_filter('line 1\rline 2'), '<p>line 1<br>line 2</p>')
def test_carriage_newline(self):
- self.assertEqual(linebreaks_filter('line 1\r\nline 2'), '<p>line 1<br />line 2</p>')
+ self.assertEqual(linebreaks_filter('line 1\r\nline 2'), '<p>line 1<br>line 2</p>')
def test_non_string_input(self):
self.assertEqual(linebreaks_filter(123), '<p>123</p>')
@@ -43,18 +43,18 @@ class FunctionTests(SimpleTestCase):
def test_autoescape(self):
self.assertEqual(
linebreaks_filter('foo\n<a>bar</a>\nbuz'),
- '<p>foo<br />&lt;a&gt;bar&lt;/a&gt;<br />buz</p>',
+ '<p>foo<br>&lt;a&gt;bar&lt;/a&gt;<br>buz</p>',
)
def test_autoescape_off(self):
self.assertEqual(
linebreaks_filter('foo\n<a>bar</a>\nbuz', autoescape=False),
- '<p>foo<br /><a>bar</a><br />buz</p>',
+ '<p>foo<br><a>bar</a><br>buz</p>',
)
def test_lazy_string_input(self):
add_header = lazy(lambda string: 'Header\n\n' + string, str)
self.assertEqual(
linebreaks_filter(add_header('line 1\r\nline2')),
- '<p>Header</p>\n\n<p>line 1<br />line2</p>'
+ '<p>Header</p>\n\n<p>line 1<br>line2</p>'
)
diff --git a/tests/template_tests/filter_tests/test_linebreaksbr.py b/tests/template_tests/filter_tests/test_linebreaksbr.py
index 83a15f97db..f2583f0aaf 100644
--- a/tests/template_tests/filter_tests/test_linebreaksbr.py
+++ b/tests/template_tests/filter_tests/test_linebreaksbr.py
@@ -14,24 +14,24 @@ class LinebreaksbrTests(SimpleTestCase):
@setup({'linebreaksbr01': '{{ a|linebreaksbr }} {{ b|linebreaksbr }}'})
def test_linebreaksbr01(self):
output = self.engine.render_to_string('linebreaksbr01', {"a": "x&\ny", "b": mark_safe("x&\ny")})
- self.assertEqual(output, "x&amp;<br />y x&<br />y")
+ self.assertEqual(output, "x&amp;<br>y x&<br>y")
@setup({'linebreaksbr02': '{% autoescape off %}{{ a|linebreaksbr }} {{ b|linebreaksbr }}{% endautoescape %}'})
def test_linebreaksbr02(self):
output = self.engine.render_to_string('linebreaksbr02', {"a": "x&\ny", "b": mark_safe("x&\ny")})
- self.assertEqual(output, "x&<br />y x&<br />y")
+ self.assertEqual(output, "x&<br>y x&<br>y")
class FunctionTests(SimpleTestCase):
def test_newline(self):
- self.assertEqual(linebreaksbr('line 1\nline 2'), 'line 1<br />line 2')
+ self.assertEqual(linebreaksbr('line 1\nline 2'), 'line 1<br>line 2')
def test_carriage(self):
- self.assertEqual(linebreaksbr('line 1\rline 2'), 'line 1<br />line 2')
+ self.assertEqual(linebreaksbr('line 1\rline 2'), 'line 1<br>line 2')
def test_carriage_newline(self):
- self.assertEqual(linebreaksbr('line 1\r\nline 2'), 'line 1<br />line 2')
+ self.assertEqual(linebreaksbr('line 1\r\nline 2'), 'line 1<br>line 2')
def test_non_string_input(self):
self.assertEqual(linebreaksbr(123), '123')
@@ -39,11 +39,11 @@ class FunctionTests(SimpleTestCase):
def test_autoescape(self):
self.assertEqual(
linebreaksbr('foo\n<a>bar</a>\nbuz'),
- 'foo<br />&lt;a&gt;bar&lt;/a&gt;<br />buz',
+ 'foo<br>&lt;a&gt;bar&lt;/a&gt;<br>buz',
)
def test_autoescape_off(self):
self.assertEqual(
linebreaksbr('foo\n<a>bar</a>\nbuz', autoescape=False),
- 'foo<br /><a>bar</a><br />buz',
+ 'foo<br><a>bar</a><br>buz',
)
diff --git a/tests/templates/login.html b/tests/templates/login.html
index d1aa5f6b7c..d9909aea60 100644
--- a/tests/templates/login.html
+++ b/tests/templates/login.html
@@ -11,7 +11,7 @@
<tr><td><label for="id_password">Password:</label></td><td>{{ form.password }}</td></tr>
</table>
-<input type="submit" value="login" />
-<input type="hidden" name="next" value="{{ next }}" />
+<input type="submit" value="login">
+<input type="hidden" name="next" value="{{ next }}">
</form>
{% endblock %}
diff --git a/tests/utils_tests/test_html.py b/tests/utils_tests/test_html.py
index 08b31bc55a..e6d1fe9a59 100644
--- a/tests/utils_tests/test_html.py
+++ b/tests/utils_tests/test_html.py
@@ -57,8 +57,8 @@ class TestUtilsHtml(SimpleTestCase):
def test_linebreaks(self):
items = (
("para1\n\npara2\r\rpara3", "<p>para1</p>\n\n<p>para2</p>\n\n<p>para3</p>"),
- ("para1\nsub1\rsub2\n\npara2", "<p>para1<br />sub1<br />sub2</p>\n\n<p>para2</p>"),
- ("para1\r\n\r\npara2\rsub1\r\rpara4", "<p>para1</p>\n\n<p>para2<br />sub1</p>\n\n<p>para4</p>"),
+ ("para1\nsub1\rsub2\n\npara2", "<p>para1<br>sub1<br>sub2</p>\n\n<p>para2</p>"),
+ ("para1\r\n\r\npara2\rsub1\r\rpara4", "<p>para1</p>\n\n<p>para2<br>sub1</p>\n\n<p>para4</p>"),
("para1\tmore\n\npara2", "<p>para1\tmore</p>\n\n<p>para2</p>"),
)
for value, output in items: