Index: django/newforms/forms.py
===================================================================
--- django/newforms/forms.py	(revision 6345)
+++ django/newforms/forms.py	(working copy)
@@ -129,9 +129,6 @@
                     output.append(error_row % force_unicode(bf_errors))
                 if bf.label:
                     label = escape(force_unicode(bf.label))
-                    # Only add a colon if the label does not end in punctuation.
-                    if label[-1] not in ':?.!':
-                        label += ':'
                     label = bf.label_tag(label) or ''
                 else:
                     label = ''
Index: tests/modeltests/model_forms/models.py
===================================================================
--- tests/modeltests/model_forms/models.py	(revision 6345)
+++ tests/modeltests/model_forms/models.py	(working copy)
@@ -80,21 +80,21 @@
 >>> CategoryForm = form_for_model(Category)
 >>> f = CategoryForm()
 >>> print f
-<tr><th><label for="id_name">Name:</label></th><td><input id="id_name" type="text" name="name" maxlength="20" /></td></tr>
-<tr><th><label for="id_slug">Slug:</label></th><td><input id="id_slug" type="text" name="slug" maxlength="20" /></td></tr>
-<tr><th><label for="id_url">The URL:</label></th><td><input id="id_url" type="text" name="url" maxlength="40" /></td></tr>
+<tr><th><label for="id_name">Name</label></th><td><input id="id_name" type="text" name="name" maxlength="20" /></td></tr>
+<tr><th><label for="id_slug">Slug</label></th><td><input id="id_slug" type="text" name="slug" maxlength="20" /></td></tr>
+<tr><th><label for="id_url">The URL</label></th><td><input id="id_url" type="text" name="url" maxlength="40" /></td></tr>
 >>> print f.as_ul()
-<li><label for="id_name">Name:</label> <input id="id_name" type="text" name="name" maxlength="20" /></li>
-<li><label for="id_slug">Slug:</label> <input id="id_slug" type="text" name="slug" maxlength="20" /></li>
-<li><label for="id_url">The URL:</label> <input id="id_url" type="text" name="url" maxlength="40" /></li>
+<li><label for="id_name">Name</label> <input id="id_name" type="text" name="name" maxlength="20" /></li>
+<li><label for="id_slug">Slug</label> <input id="id_slug" type="text" name="slug" maxlength="20" /></li>
+<li><label for="id_url">The URL</label> <input id="id_url" type="text" name="url" maxlength="40" /></li>
 >>> print f['name']
 <input id="id_name" type="text" name="name" maxlength="20" />
 
 >>> f = CategoryForm(auto_id=False)
 >>> print f.as_ul()
-<li>Name: <input type="text" name="name" maxlength="20" /></li>
-<li>Slug: <input type="text" name="slug" maxlength="20" /></li>
-<li>The URL: <input type="text" name="url" maxlength="40" /></li>
+<li>Name <input type="text" name="name" maxlength="20" /></li>
+<li>Slug <input type="text" name="slug" maxlength="20" /></li>
+<li>The URL <input type="text" name="url" maxlength="40" /></li>
 
 >>> f = CategoryForm({'name': 'Entertainment', 'slug': 'entertainment', 'url': 'entertainment'})
 >>> f.is_valid()
@@ -164,22 +164,22 @@
 >>> ArticleForm = form_for_model(Article)
 >>> f = ArticleForm(auto_id=False)
 >>> print f
-<tr><th>Headline:</th><td><input type="text" name="headline" maxlength="50" /></td></tr>
-<tr><th>Slug:</th><td><input type="text" name="slug" maxlength="50" /></td></tr>
-<tr><th>Pub date:</th><td><input type="text" name="pub_date" /></td></tr>
-<tr><th>Writer:</th><td><select name="writer">
+<tr><th>Headline</th><td><input type="text" name="headline" maxlength="50" /></td></tr>
+<tr><th>Slug</th><td><input type="text" name="slug" maxlength="50" /></td></tr>
+<tr><th>Pub date</th><td><input type="text" name="pub_date" /></td></tr>
+<tr><th>Writer</th><td><select name="writer">
 <option value="" selected="selected">---------</option>
 <option value="1">Mike Royko</option>
 <option value="2">Bob Woodward</option>
 </select></td></tr>
-<tr><th>Article:</th><td><textarea rows="10" cols="40" name="article"></textarea></td></tr>
-<tr><th>Status:</th><td><select name="status">
+<tr><th>Article</th><td><textarea rows="10" cols="40" name="article"></textarea></td></tr>
+<tr><th>Status</th><td><select name="status">
 <option value="" selected="selected">---------</option>
 <option value="1">Draft</option>
 <option value="2">Pending</option>
 <option value="3">Live</option>
 </select></td></tr>
-<tr><th>Categories:</th><td><select multiple="multiple" name="categories">
+<tr><th>Categories</th><td><select multiple="multiple" name="categories">
 <option value="1">Entertainment</option>
 <option value="2">It&#39;s a test</option>
 <option value="3">Third test</option>
@@ -194,8 +194,8 @@
 >>> PartialArticleForm = form_for_model(Article, fields=('headline','pub_date'))
 >>> f = PartialArticleForm(auto_id=False)
 >>> print f
-<tr><th>Headline:</th><td><input type="text" name="headline" maxlength="50" /></td></tr>
-<tr><th>Pub date:</th><td><input type="text" name="pub_date" /></td></tr>
+<tr><th>Headline</th><td><input type="text" name="headline" maxlength="50" /></td></tr>
+<tr><th>Pub date</th><td><input type="text" name="pub_date" /></td></tr>
 
 You can pass a custom Form class to form_for_model. Make sure it's a
 subclass of BaseForm, not Form.
@@ -214,7 +214,7 @@
 >>> RoykoForm = form_for_instance(w)
 >>> f = RoykoForm(auto_id=False)
 >>> print f
-<tr><th>Name:</th><td><input type="text" name="name" value="Mike Royko" maxlength="50" /><br />Use both first and last names.</td></tr>
+<tr><th>Name</th><td><input type="text" name="name" value="Mike Royko" maxlength="50" /><br />Use both first and last names.</td></tr>
 
 >>> art = Article(headline='Test article', slug='test-article', pub_date=datetime.date(1988, 1, 4), writer=w, article='Hello.')
 >>> art.save()
@@ -223,22 +223,22 @@
 >>> TestArticleForm = form_for_instance(art)
 >>> f = TestArticleForm(auto_id=False)
 >>> print f.as_ul()
-<li>Headline: <input type="text" name="headline" value="Test article" maxlength="50" /></li>
-<li>Slug: <input type="text" name="slug" value="test-article" maxlength="50" /></li>
-<li>Pub date: <input type="text" name="pub_date" value="1988-01-04" /></li>
-<li>Writer: <select name="writer">
+<li>Headline <input type="text" name="headline" value="Test article" maxlength="50" /></li>
+<li>Slug <input type="text" name="slug" value="test-article" maxlength="50" /></li>
+<li>Pub date <input type="text" name="pub_date" value="1988-01-04" /></li>
+<li>Writer <select name="writer">
 <option value="">---------</option>
 <option value="1" selected="selected">Mike Royko</option>
 <option value="2">Bob Woodward</option>
 </select></li>
-<li>Article: <textarea rows="10" cols="40" name="article">Hello.</textarea></li>
-<li>Status: <select name="status">
+<li>Article <textarea rows="10" cols="40" name="article">Hello.</textarea></li>
+<li>Status <select name="status">
 <option value="" selected="selected">---------</option>
 <option value="1">Draft</option>
 <option value="2">Pending</option>
 <option value="3">Live</option>
 </select></li>
-<li>Categories: <select multiple="multiple" name="categories">
+<li>Categories <select multiple="multiple" name="categories">
 <option value="1">Entertainment</option>
 <option value="2">It&#39;s a test</option>
 <option value="3">Third test</option>
@@ -258,9 +258,9 @@
 >>> PartialArticleForm = form_for_instance(art, fields=('headline', 'slug', 'pub_date'))
 >>> f = PartialArticleForm({'headline': u'New headline', 'slug': 'new-headline', 'pub_date': u'1988-01-04'}, auto_id=False)
 >>> print f.as_ul()
-<li>Headline: <input type="text" name="headline" value="New headline" maxlength="50" /></li>
-<li>Slug: <input type="text" name="slug" value="new-headline" maxlength="50" /></li>
-<li>Pub date: <input type="text" name="pub_date" value="1988-01-04" /></li>
+<li>Headline <input type="text" name="headline" value="New headline" maxlength="50" /></li>
+<li>Slug <input type="text" name="slug" value="new-headline" maxlength="50" /></li>
+<li>Pub date <input type="text" name="pub_date" value="1988-01-04" /></li>
 >>> f.is_valid()
 True
 >>> new_art = f.save()
@@ -279,22 +279,22 @@
 >>> TestArticleForm = form_for_instance(new_art)
 >>> f = TestArticleForm(auto_id=False)
 >>> print f.as_ul()
-<li>Headline: <input type="text" name="headline" value="New headline" maxlength="50" /></li>
-<li>Slug: <input type="text" name="slug" value="new-headline" maxlength="50" /></li>
-<li>Pub date: <input type="text" name="pub_date" value="1988-01-04" /></li>
-<li>Writer: <select name="writer">
+<li>Headline <input type="text" name="headline" value="New headline" maxlength="50" /></li>
+<li>Slug <input type="text" name="slug" value="new-headline" maxlength="50" /></li>
+<li>Pub date <input type="text" name="pub_date" value="1988-01-04" /></li>
+<li>Writer <select name="writer">
 <option value="">---------</option>
 <option value="1" selected="selected">Mike Royko</option>
 <option value="2">Bob Woodward</option>
 </select></li>
-<li>Article: <textarea rows="10" cols="40" name="article">Hello.</textarea></li>
-<li>Status: <select name="status">
+<li>Article <textarea rows="10" cols="40" name="article">Hello.</textarea></li>
+<li>Status <select name="status">
 <option value="" selected="selected">---------</option>
 <option value="1">Draft</option>
 <option value="2">Pending</option>
 <option value="3">Live</option>
 </select></li>
-<li>Categories: <select multiple="multiple" name="categories">
+<li>Categories <select multiple="multiple" name="categories">
 <option value="1" selected="selected">Entertainment</option>
 <option value="2">It&#39;s a test</option>
 <option value="3">Third test</option>
@@ -387,22 +387,22 @@
 >>> ArticleForm = form_for_model(Article)
 >>> f = ArticleForm(auto_id=False)
 >>> print f.as_ul()
-<li>Headline: <input type="text" name="headline" maxlength="50" /></li>
-<li>Slug: <input type="text" name="slug" maxlength="50" /></li>
-<li>Pub date: <input type="text" name="pub_date" /></li>
-<li>Writer: <select name="writer">
+<li>Headline <input type="text" name="headline" maxlength="50" /></li>
+<li>Slug <input type="text" name="slug" maxlength="50" /></li>
+<li>Pub date <input type="text" name="pub_date" /></li>
+<li>Writer <select name="writer">
 <option value="" selected="selected">---------</option>
 <option value="1">Mike Royko</option>
 <option value="2">Bob Woodward</option>
 </select></li>
-<li>Article: <textarea rows="10" cols="40" name="article"></textarea></li>
-<li>Status: <select name="status">
+<li>Article <textarea rows="10" cols="40" name="article"></textarea></li>
+<li>Status <select name="status">
 <option value="" selected="selected">---------</option>
 <option value="1">Draft</option>
 <option value="2">Pending</option>
 <option value="3">Live</option>
 </select></li>
-<li>Categories: <select multiple="multiple" name="categories">
+<li>Categories <select multiple="multiple" name="categories">
 <option value="1">Entertainment</option>
 <option value="2">It&#39;s a test</option>
 <option value="3">Third</option>
@@ -412,23 +412,23 @@
 >>> Writer.objects.create(name='Carl Bernstein')
 <Writer: Carl Bernstein>
 >>> print f.as_ul()
-<li>Headline: <input type="text" name="headline" maxlength="50" /></li>
-<li>Slug: <input type="text" name="slug" maxlength="50" /></li>
-<li>Pub date: <input type="text" name="pub_date" /></li>
-<li>Writer: <select name="writer">
+<li>Headline <input type="text" name="headline" maxlength="50" /></li>
+<li>Slug <input type="text" name="slug" maxlength="50" /></li>
+<li>Pub date <input type="text" name="pub_date" /></li>
+<li>Writer <select name="writer">
 <option value="" selected="selected">---------</option>
 <option value="1">Mike Royko</option>
 <option value="2">Bob Woodward</option>
 <option value="3">Carl Bernstein</option>
 </select></li>
-<li>Article: <textarea rows="10" cols="40" name="article"></textarea></li>
-<li>Status: <select name="status">
+<li>Article <textarea rows="10" cols="40" name="article"></textarea></li>
+<li>Status <select name="status">
 <option value="" selected="selected">---------</option>
 <option value="1">Draft</option>
 <option value="2">Pending</option>
 <option value="3">Live</option>
 </select></li>
-<li>Categories: <select multiple="multiple" name="categories">
+<li>Categories <select multiple="multiple" name="categories">
 <option value="1">Entertainment</option>
 <option value="2">It&#39;s a test</option>
 <option value="3">Third</option>
Index: tests/regressiontests/forms/tests.py
===================================================================
--- tests/regressiontests/forms/tests.py	(revision 6345)
+++ tests/regressiontests/forms/tests.py	(working copy)
@@ -347,12 +347,12 @@
 ...     somechoice = ChoiceField(choices=chain((('', '-'*9),), [(thing['id'], thing['name']) for thing in things]))
 >>> f = SomeForm()
 >>> f.as_table()
-u'<tr><th><label for="id_somechoice">Somechoice:</label></th><td><select name="somechoice" id="id_somechoice">\n<option value="" selected="selected">---------</option>\n<option value="1">And Boom</option>\n<option value="2">One More Thing!</option>\n</select></td></tr>'
+u'<tr><th><label for="id_somechoice">Somechoice</label></th><td><select name="somechoice" id="id_somechoice">\n<option value="" selected="selected">---------</option>\n<option value="1">And Boom</option>\n<option value="2">One More Thing!</option>\n</select></td></tr>'
 >>> f.as_table()
-u'<tr><th><label for="id_somechoice">Somechoice:</label></th><td><select name="somechoice" id="id_somechoice">\n<option value="" selected="selected">---------</option>\n<option value="1">And Boom</option>\n<option value="2">One More Thing!</option>\n</select></td></tr>'
+u'<tr><th><label for="id_somechoice">Somechoice</label></th><td><select name="somechoice" id="id_somechoice">\n<option value="" selected="selected">---------</option>\n<option value="1">And Boom</option>\n<option value="2">One More Thing!</option>\n</select></td></tr>'
 >>> f = SomeForm({'somechoice': 2})
 >>> f.as_table()
-u'<tr><th><label for="id_somechoice">Somechoice:</label></th><td><select name="somechoice" id="id_somechoice">\n<option value="">---------</option>\n<option value="1">And Boom</option>\n<option value="2" selected="selected">One More Thing!</option>\n</select></td></tr>'
+u'<tr><th><label for="id_somechoice">Somechoice</label></th><td><select name="somechoice" id="id_somechoice">\n<option value="">---------</option>\n<option value="1">And Boom</option>\n<option value="2" selected="selected">One More Thing!</option>\n</select></td></tr>'
 
 You can also pass 'choices' to the constructor:
 >>> w = Select(choices=[(1, 1), (2, 2), (3, 3)])
@@ -2048,9 +2048,9 @@
 Last name Lennon
 Birthday 1940-10-9
 >>> print 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" /></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" /></td></tr>
-<tr><th><label for="id_birthday">Birthday:</label></th><td><input type="text" name="birthday" value="1940-10-9" id="id_birthday" /></td></tr>
+<tr><th><label for="id_first_name">First name</label></th><td><input type="text" name="first_name" value="John" id="id_first_name" /></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" /></td></tr>
+<tr><th><label for="id_birthday">Birthday</label></th><td><input type="text" name="birthday" value="1940-10-9" id="id_birthday" /></td></tr>
 
 Empty dictionaries are valid, too.
 >>> p = Person({})
@@ -2065,24 +2065,24 @@
 ...
 AttributeError: 'Person' object has no attribute 'cleaned_data'
 >>> print 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" /></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" /></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" /></td></tr>
+<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" /></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" /></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" /></td></tr>
 >>> print 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" /></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" /></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" /></td></tr>
+<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" /></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" /></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" /></td></tr>
 >>> print 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" /></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" /></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" /></li>
+<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" /></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" /></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" /></li>
 >>> print 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" /></p>
+<p><label for="id_first_name">First name</label> <input type="text" name="first_name" id="id_first_name" /></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" /></p>
+<p><label for="id_last_name">Last name</label> <input type="text" name="last_name" id="id_last_name" /></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" /></p>
+<p><label for="id_birthday">Birthday</label> <input type="text" name="birthday" id="id_birthday" /></p>
 
 If you don't pass any values to the Form's __init__(), or if you pass None,
 the Form will be considered unbound and won't do any validation. Form.errors
@@ -2099,30 +2099,30 @@
 ...
 AttributeError: 'Person' object has no attribute 'cleaned_data'
 >>> print p
-<tr><th><label for="id_first_name">First name:</label></th><td><input type="text" name="first_name" id="id_first_name" /></td></tr>
-<tr><th><label for="id_last_name">Last name:</label></th><td><input type="text" name="last_name" id="id_last_name" /></td></tr>
-<tr><th><label for="id_birthday">Birthday:</label></th><td><input type="text" name="birthday" id="id_birthday" /></td></tr>
+<tr><th><label for="id_first_name">First name</label></th><td><input type="text" name="first_name" id="id_first_name" /></td></tr>
+<tr><th><label for="id_last_name">Last name</label></th><td><input type="text" name="last_name" id="id_last_name" /></td></tr>
+<tr><th><label for="id_birthday">Birthday</label></th><td><input type="text" name="birthday" id="id_birthday" /></td></tr>
 >>> print 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" /></td></tr>
-<tr><th><label for="id_last_name">Last name:</label></th><td><input type="text" name="last_name" id="id_last_name" /></td></tr>
-<tr><th><label for="id_birthday">Birthday:</label></th><td><input type="text" name="birthday" id="id_birthday" /></td></tr>
+<tr><th><label for="id_first_name">First name</label></th><td><input type="text" name="first_name" id="id_first_name" /></td></tr>
+<tr><th><label for="id_last_name">Last name</label></th><td><input type="text" name="last_name" id="id_last_name" /></td></tr>
+<tr><th><label for="id_birthday">Birthday</label></th><td><input type="text" name="birthday" id="id_birthday" /></td></tr>
 >>> print p.as_ul()
-<li><label for="id_first_name">First name:</label> <input type="text" name="first_name" id="id_first_name" /></li>
-<li><label for="id_last_name">Last name:</label> <input type="text" name="last_name" id="id_last_name" /></li>
-<li><label for="id_birthday">Birthday:</label> <input type="text" name="birthday" id="id_birthday" /></li>
+<li><label for="id_first_name">First name</label> <input type="text" name="first_name" id="id_first_name" /></li>
+<li><label for="id_last_name">Last name</label> <input type="text" name="last_name" id="id_last_name" /></li>
+<li><label for="id_birthday">Birthday</label> <input type="text" name="birthday" id="id_birthday" /></li>
 >>> print p.as_p()
-<p><label for="id_first_name">First name:</label> <input type="text" name="first_name" id="id_first_name" /></p>
-<p><label for="id_last_name">Last name:</label> <input type="text" name="last_name" id="id_last_name" /></p>
-<p><label for="id_birthday">Birthday:</label> <input type="text" name="birthday" id="id_birthday" /></p>
+<p><label for="id_first_name">First name</label> <input type="text" name="first_name" id="id_first_name" /></p>
+<p><label for="id_last_name">Last name</label> <input type="text" name="last_name" id="id_last_name" /></p>
+<p><label for="id_birthday">Birthday</label> <input type="text" name="birthday" id="id_birthday" /></p>
 
 Unicode values are handled properly.
 >>> p = Person({'first_name': u'John', 'last_name': u'\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111', 'birthday': '1940-10-9'})
 >>> p.as_table()
-u'<tr><th><label for="id_first_name">First name:</label></th><td><input type="text" name="first_name" value="John" id="id_first_name" /></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" /></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" /></td></tr>'
+u'<tr><th><label for="id_first_name">First name</label></th><td><input type="text" name="first_name" value="John" id="id_first_name" /></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" /></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" /></td></tr>'
 >>> p.as_ul()
-u'<li><label for="id_first_name">First name:</label> <input type="text" name="first_name" value="John" id="id_first_name" /></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" /></li>\n<li><label for="id_birthday">Birthday:</label> <input type="text" name="birthday" value="1940-10-9" id="id_birthday" /></li>'
+u'<li><label for="id_first_name">First name</label> <input type="text" name="first_name" value="John" id="id_first_name" /></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" /></li>\n<li><label for="id_birthday">Birthday</label> <input type="text" name="birthday" value="1940-10-9" id="id_birthday" /></li>'
 >>> p.as_p()
-u'<p><label for="id_first_name">First name:</label> <input type="text" name="first_name" value="John" id="id_first_name" /></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" /></p>\n<p><label for="id_birthday">Birthday:</label> <input type="text" name="birthday" value="1940-10-9" id="id_birthday" /></p>'
+u'<p><label for="id_first_name">First name</label> <input type="text" name="first_name" value="John" id="id_first_name" /></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" /></p>\n<p><label for="id_birthday">Birthday</label> <input type="text" name="birthday" value="1940-10-9" id="id_birthday" /></p>'
 
 >>> p = Person({'last_name': u'Lennon'})
 >>> p.errors
@@ -2200,33 +2200,33 @@
 the human-readable labels for a field.
 >>> p = Person(auto_id='%s_id')
 >>> print 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" /></td></tr>
-<tr><th><label for="last_name_id">Last name:</label></th><td><input type="text" name="last_name" id="last_name_id" /></td></tr>
-<tr><th><label for="birthday_id">Birthday:</label></th><td><input type="text" name="birthday" id="birthday_id" /></td></tr>
+<tr><th><label for="first_name_id">First name</label></th><td><input type="text" name="first_name" id="first_name_id" /></td></tr>
+<tr><th><label for="last_name_id">Last name</label></th><td><input type="text" name="last_name" id="last_name_id" /></td></tr>
+<tr><th><label for="birthday_id">Birthday</label></th><td><input type="text" name="birthday" id="birthday_id" /></td></tr>
 >>> print p.as_ul()
-<li><label for="first_name_id">First name:</label> <input type="text" name="first_name" id="first_name_id" /></li>
-<li><label for="last_name_id">Last name:</label> <input type="text" name="last_name" id="last_name_id" /></li>
-<li><label for="birthday_id">Birthday:</label> <input type="text" name="birthday" id="birthday_id" /></li>
+<li><label for="first_name_id">First name</label> <input type="text" name="first_name" id="first_name_id" /></li>
+<li><label for="last_name_id">Last name</label> <input type="text" name="last_name" id="last_name_id" /></li>
+<li><label for="birthday_id">Birthday</label> <input type="text" name="birthday" id="birthday_id" /></li>
 >>> print p.as_p()
-<p><label for="first_name_id">First name:</label> <input type="text" name="first_name" id="first_name_id" /></p>
-<p><label for="last_name_id">Last name:</label> <input type="text" name="last_name" id="last_name_id" /></p>
-<p><label for="birthday_id">Birthday:</label> <input type="text" name="birthday" id="birthday_id" /></p>
+<p><label for="first_name_id">First name</label> <input type="text" name="first_name" id="first_name_id" /></p>
+<p><label for="last_name_id">Last name</label> <input type="text" name="last_name" id="last_name_id" /></p>
+<p><label for="birthday_id">Birthday</label> <input type="text" name="birthday" id="birthday_id" /></p>
 
 If auto_id is any True value whose str() does not contain '%s', the "id"
 attribute will be the name of the field.
 >>> p = Person(auto_id=True)
 >>> print p.as_ul()
-<li><label for="first_name">First name:</label> <input type="text" name="first_name" id="first_name" /></li>
-<li><label for="last_name">Last name:</label> <input type="text" name="last_name" id="last_name" /></li>
-<li><label for="birthday">Birthday:</label> <input type="text" name="birthday" id="birthday" /></li>
+<li><label for="first_name">First name</label> <input type="text" name="first_name" id="first_name" /></li>
+<li><label for="last_name">Last name</label> <input type="text" name="last_name" id="last_name" /></li>
+<li><label for="birthday">Birthday</label> <input type="text" name="birthday" id="birthday" /></li>
 
 If auto_id is any False value, an "id" attribute won't be output unless it
 was manually entered.
 >>> p = Person(auto_id=False)
 >>> print p.as_ul()
-<li>First name: <input type="text" name="first_name" /></li>
-<li>Last name: <input type="text" name="last_name" /></li>
-<li>Birthday: <input type="text" name="birthday" /></li>
+<li>First name <input type="text" name="first_name" /></li>
+<li>Last name <input type="text" name="last_name" /></li>
+<li>Birthday <input type="text" name="birthday" /></li>
 
 In this example, auto_id is False, but the "id" attribute for the "first_name"
 field is given. Also note that field gets a <label>, while the others don't.
@@ -2236,17 +2236,17 @@
 ...     birthday = DateField()
 >>> p = PersonNew(auto_id=False)
 >>> print p.as_ul()
-<li><label for="first_name_id">First name:</label> <input type="text" id="first_name_id" name="first_name" /></li>
-<li>Last name: <input type="text" name="last_name" /></li>
-<li>Birthday: <input type="text" name="birthday" /></li>
+<li><label for="first_name_id">First name</label> <input type="text" id="first_name_id" name="first_name" /></li>
+<li>Last name <input type="text" name="last_name" /></li>
+<li>Birthday <input type="text" name="birthday" /></li>
 
 If the "id" attribute is specified in the Form and auto_id is True, the "id"
 attribute in the Form gets precedence.
 >>> p = PersonNew(auto_id=True)
 >>> print p.as_ul()
-<li><label for="first_name_id">First name:</label> <input type="text" id="first_name_id" name="first_name" /></li>
-<li><label for="last_name">Last name:</label> <input type="text" name="last_name" id="last_name" /></li>
-<li><label for="birthday">Birthday:</label> <input type="text" name="birthday" id="birthday" /></li>
+<li><label for="first_name_id">First name</label> <input type="text" id="first_name_id" name="first_name" /></li>
+<li><label for="last_name">Last name</label> <input type="text" name="last_name" id="last_name" /></li>
+<li><label for="birthday">Birthday</label> <input type="text" name="birthday" id="birthday" /></li>
 
 >>> class SignupForm(Form):
 ...     email = EmailField()
@@ -2394,14 +2394,14 @@
 <li><label><input type="radio" name="language" value="J" /> Java</label></li>
 </ul>
 >>> print f
-<tr><th>Name:</th><td><input type="text" name="name" /></td></tr>
-<tr><th>Language:</th><td><ul>
+<tr><th>Name</th><td><input type="text" name="name" /></td></tr>
+<tr><th>Language</th><td><ul>
 <li><label><input type="radio" name="language" value="P" /> Python</label></li>
 <li><label><input type="radio" name="language" value="J" /> Java</label></li>
 </ul></td></tr>
 >>> print f.as_ul()
-<li>Name: <input type="text" name="name" /></li>
-<li>Language: <ul>
+<li>Name <input type="text" name="name" /></li>
+<li>Language <ul>
 <li><label><input type="radio" name="language" value="P" /> Python</label></li>
 <li><label><input type="radio" name="language" value="J" /> Java</label></li>
 </ul></li>
@@ -2420,20 +2420,20 @@
 either as_table() or as_ul(), the label for the RadioSelect will point to the
 ID of the *first* radio button.
 >>> print f
-<tr><th><label for="id_name">Name:</label></th><td><input type="text" name="name" id="id_name" /></td></tr>
-<tr><th><label for="id_language_0">Language:</label></th><td><ul>
+<tr><th><label for="id_name">Name</label></th><td><input type="text" name="name" id="id_name" /></td></tr>
+<tr><th><label for="id_language_0">Language</label></th><td><ul>
 <li><label><input type="radio" id="id_language_0" value="P" name="language" /> Python</label></li>
 <li><label><input type="radio" id="id_language_1" value="J" name="language" /> Java</label></li>
 </ul></td></tr>
 >>> print f.as_ul()
-<li><label for="id_name">Name:</label> <input type="text" name="name" id="id_name" /></li>
-<li><label for="id_language_0">Language:</label> <ul>
+<li><label for="id_name">Name</label> <input type="text" name="name" id="id_name" /></li>
+<li><label for="id_language_0">Language</label> <ul>
 <li><label><input type="radio" id="id_language_0" value="P" name="language" /> Python</label></li>
 <li><label><input type="radio" id="id_language_1" value="J" name="language" /> Java</label></li>
 </ul></li>
 >>> print f.as_p()
-<p><label for="id_name">Name:</label> <input type="text" name="name" id="id_name" /></p>
-<p><label for="id_language_0">Language:</label> <ul>
+<p><label for="id_name">Name</label> <input type="text" name="name" id="id_name" /></p>
+<p><label for="id_language_0">Language</label> <ul>
 <li><label><input type="radio" id="id_language_0" value="P" name="language" /> Python</label></li>
 <li><label><input type="radio" id="id_language_1" value="J" name="language" /> Java</label></li>
 </ul></p>
@@ -2531,7 +2531,7 @@
 ...     composers = MultipleChoiceField(choices=[('J', 'John Lennon'), ('P', 'Paul McCartney')], widget=MultipleHiddenInput)
 >>> f = SongFormHidden(MultiValueDict(dict(name=['Yesterday'], composers=['J', 'P'])), auto_id=False)
 >>> print f.as_ul()
-<li>Name: <input type="text" name="name" value="Yesterday" /><input type="hidden" name="composers" value="J" />
+<li>Name <input type="text" name="name" value="Yesterday" /><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
@@ -2558,10 +2558,10 @@
 
 >>> f = EscapingForm({'special_name': "Nothing to escape"}, auto_id=False)
 >>> print f
-<tr><th>Special name:</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" /></td></tr>
+<tr><th>Special name</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" /></td></tr>
 >>> f = EscapingForm({'special_name': "Should escape < & > and <script>alert('xss')</script>"}, auto_id=False)
 >>> print f
-<tr><th>Special name:</th><td><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;" /></td></tr>
+<tr><th>Special name</th><td><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;" /></td></tr>
 
 # Validating multiple fields in relation to another ###########################
 
@@ -2615,9 +2615,9 @@
 {}
 >>> f = UserRegistration({}, auto_id=False)
 >>> print 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" /></td></tr>
-<tr><th>Password1:</th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="password" name="password1" /></td></tr>
-<tr><th>Password2:</th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="password" name="password2" /></td></tr>
+<tr><th>Username</th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="text" name="username" maxlength="10" /></td></tr>
+<tr><th>Password1</th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="password" name="password1" /></td></tr>
+<tr><th>Password2</th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="password" name="password2" /></td></tr>
 >>> f.errors
 {'username': [u'This field is required.'], 'password1': [u'This field is required.'], 'password2': [u'This field is required.']}
 >>> f = UserRegistration({'username': 'adrian', 'password1': 'foo', 'password2': 'bar'}, auto_id=False)
@@ -2625,14 +2625,14 @@
 {'__all__': [u'Please make sure your passwords match.']}
 >>> print f.as_table()
 <tr><td colspan="2"><ul class="errorlist"><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" /></td></tr>
-<tr><th>Password1:</th><td><input type="password" name="password1" value="foo" /></td></tr>
-<tr><th>Password2:</th><td><input type="password" name="password2" value="bar" /></td></tr>
+<tr><th>Username</th><td><input type="text" name="username" value="adrian" maxlength="10" /></td></tr>
+<tr><th>Password1</th><td><input type="password" name="password1" value="foo" /></td></tr>
+<tr><th>Password2</th><td><input type="password" name="password2" value="bar" /></td></tr>
 >>> print f.as_ul()
 <li><ul class="errorlist"><li>Please make sure your passwords match.</li></ul></li>
-<li>Username: <input type="text" name="username" value="adrian" maxlength="10" /></li>
-<li>Password1: <input type="password" name="password1" value="foo" /></li>
-<li>Password2: <input type="password" name="password2" value="bar" /></li>
+<li>Username <input type="text" name="username" value="adrian" maxlength="10" /></li>
+<li>Password1 <input type="password" name="password1" value="foo" /></li>
+<li>Password2 <input type="password" name="password2" value="bar" /></li>
 >>> f = UserRegistration({'username': 'adrian', 'password1': 'foo', 'password2': 'foo'}, auto_id=False)
 >>> f.errors
 {}
@@ -2652,9 +2652,9 @@
 ...         self.fields['birthday'] = DateField()
 >>> p = Person(auto_id=False)
 >>> print p
-<tr><th>First name:</th><td><input type="text" name="first_name" /></td></tr>
-<tr><th>Last name:</th><td><input type="text" name="last_name" /></td></tr>
-<tr><th>Birthday:</th><td><input type="text" name="birthday" /></td></tr>
+<tr><th>First name</th><td><input type="text" name="first_name" /></td></tr>
+<tr><th>Last name</th><td><input type="text" name="last_name" /></td></tr>
+<tr><th>Birthday</th><td><input type="text" name="birthday" /></td></tr>
 
 Instances of a dynamic Form do not persist fields from one Form instance to
 the next.
@@ -2666,13 +2666,13 @@
 >>> field_list = [('field1', CharField()), ('field2', CharField())]
 >>> my_form = MyForm(field_list=field_list)
 >>> print my_form
-<tr><th>Field1:</th><td><input type="text" name="field1" /></td></tr>
-<tr><th>Field2:</th><td><input type="text" name="field2" /></td></tr>
+<tr><th>Field1</th><td><input type="text" name="field1" /></td></tr>
+<tr><th>Field2</th><td><input type="text" name="field2" /></td></tr>
 >>> field_list = [('field3', CharField()), ('field4', CharField())]
 >>> my_form = MyForm(field_list=field_list)
 >>> print my_form
-<tr><th>Field3:</th><td><input type="text" name="field3" /></td></tr>
-<tr><th>Field4:</th><td><input type="text" name="field4" /></td></tr>
+<tr><th>Field3</th><td><input type="text" name="field3" /></td></tr>
+<tr><th>Field4</th><td><input type="text" name="field4" /></td></tr>
 
 >>> class MyForm(Form):
 ...     default_field_1 = CharField()
@@ -2684,17 +2684,17 @@
 >>> field_list = [('field1', CharField()), ('field2', CharField())]
 >>> my_form = MyForm(field_list=field_list)
 >>> print my_form
-<tr><th>Default field 1:</th><td><input type="text" name="default_field_1" /></td></tr>
-<tr><th>Default field 2:</th><td><input type="text" name="default_field_2" /></td></tr>
-<tr><th>Field1:</th><td><input type="text" name="field1" /></td></tr>
-<tr><th>Field2:</th><td><input type="text" name="field2" /></td></tr>
+<tr><th>Default field 1</th><td><input type="text" name="default_field_1" /></td></tr>
+<tr><th>Default field 2</th><td><input type="text" name="default_field_2" /></td></tr>
+<tr><th>Field1</th><td><input type="text" name="field1" /></td></tr>
+<tr><th>Field2</th><td><input type="text" name="field2" /></td></tr>
 >>> field_list = [('field3', CharField()), ('field4', CharField())]
 >>> my_form = MyForm(field_list=field_list)
 >>> print my_form
-<tr><th>Default field 1:</th><td><input type="text" name="default_field_1" /></td></tr>
-<tr><th>Default field 2:</th><td><input type="text" name="default_field_2" /></td></tr>
-<tr><th>Field3:</th><td><input type="text" name="field3" /></td></tr>
-<tr><th>Field4:</th><td><input type="text" name="field4" /></td></tr>
+<tr><th>Default field 1</th><td><input type="text" name="default_field_1" /></td></tr>
+<tr><th>Default field 2</th><td><input type="text" name="default_field_2" /></td></tr>
+<tr><th>Field3</th><td><input type="text" name="field3" /></td></tr>
+<tr><th>Field4</th><td><input type="text" name="field4" /></td></tr>
 
 Similarly, changes to field attributes do not persist from one Form instance
 to the next.
@@ -2752,32 +2752,32 @@
 ...     birthday = DateField()
 >>> p = Person(auto_id=False)
 >>> print p
-<tr><th>First name:</th><td><input type="text" name="first_name" /></td></tr>
-<tr><th>Last name:</th><td><input type="text" name="last_name" /></td></tr>
-<tr><th>Birthday:</th><td><input type="text" name="birthday" /><input type="hidden" name="hidden_text" /></td></tr>
+<tr><th>First name</th><td><input type="text" name="first_name" /></td></tr>
+<tr><th>Last name</th><td><input type="text" name="last_name" /></td></tr>
+<tr><th>Birthday</th><td><input type="text" name="birthday" /><input type="hidden" name="hidden_text" /></td></tr>
 >>> print p.as_ul()
-<li>First name: <input type="text" name="first_name" /></li>
-<li>Last name: <input type="text" name="last_name" /></li>
-<li>Birthday: <input type="text" name="birthday" /><input type="hidden" name="hidden_text" /></li>
+<li>First name <input type="text" name="first_name" /></li>
+<li>Last name <input type="text" name="last_name" /></li>
+<li>Birthday <input type="text" name="birthday" /><input type="hidden" name="hidden_text" /></li>
 >>> print p.as_p()
-<p>First name: <input type="text" name="first_name" /></p>
-<p>Last name: <input type="text" name="last_name" /></p>
-<p>Birthday: <input type="text" name="birthday" /><input type="hidden" name="hidden_text" /></p>
+<p>First name <input type="text" name="first_name" /></p>
+<p>Last name <input type="text" name="last_name" /></p>
+<p>Birthday <input type="text" name="birthday" /><input type="hidden" name="hidden_text" /></p>
 
 With auto_id set, a HiddenInput still gets an ID, but it doesn't get a label.
 >>> p = Person(auto_id='id_%s')
 >>> print p
-<tr><th><label for="id_first_name">First name:</label></th><td><input type="text" name="first_name" id="id_first_name" /></td></tr>
-<tr><th><label for="id_last_name">Last name:</label></th><td><input type="text" name="last_name" id="id_last_name" /></td></tr>
-<tr><th><label for="id_birthday">Birthday:</label></th><td><input type="text" name="birthday" id="id_birthday" /><input type="hidden" name="hidden_text" id="id_hidden_text" /></td></tr>
+<tr><th><label for="id_first_name">First name</label></th><td><input type="text" name="first_name" id="id_first_name" /></td></tr>
+<tr><th><label for="id_last_name">Last name</label></th><td><input type="text" name="last_name" id="id_last_name" /></td></tr>
+<tr><th><label for="id_birthday">Birthday</label></th><td><input type="text" name="birthday" id="id_birthday" /><input type="hidden" name="hidden_text" id="id_hidden_text" /></td></tr>
 >>> print p.as_ul()
-<li><label for="id_first_name">First name:</label> <input type="text" name="first_name" id="id_first_name" /></li>
-<li><label for="id_last_name">Last name:</label> <input type="text" name="last_name" id="id_last_name" /></li>
-<li><label for="id_birthday">Birthday:</label> <input type="text" name="birthday" id="id_birthday" /><input type="hidden" name="hidden_text" id="id_hidden_text" /></li>
+<li><label for="id_first_name">First name</label> <input type="text" name="first_name" id="id_first_name" /></li>
+<li><label for="id_last_name">Last name</label> <input type="text" name="last_name" id="id_last_name" /></li>
+<li><label for="id_birthday">Birthday</label> <input type="text" name="birthday" id="id_birthday" /><input type="hidden" name="hidden_text" id="id_hidden_text" /></li>
 >>> print p.as_p()
-<p><label for="id_first_name">First name:</label> <input type="text" name="first_name" id="id_first_name" /></p>
-<p><label for="id_last_name">Last name:</label> <input type="text" name="last_name" id="id_last_name" /></p>
-<p><label for="id_birthday">Birthday:</label> <input type="text" name="birthday" id="id_birthday" /><input type="hidden" name="hidden_text" id="id_hidden_text" /></p>
+<p><label for="id_first_name">First name</label> <input type="text" name="first_name" id="id_first_name" /></p>
+<p><label for="id_last_name">Last name</label> <input type="text" name="last_name" id="id_last_name" /></p>
+<p><label for="id_birthday">Birthday</label> <input type="text" name="birthday" id="id_birthday" /><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
 will include the error message(s) with the text "(Hidden field [fieldname]) "
@@ -2786,19 +2786,19 @@
 >>> p = Person({'first_name': 'John', 'last_name': 'Lennon', 'birthday': '1940-10-9'}, auto_id=False)
 >>> print p
 <tr><td colspan="2"><ul class="errorlist"><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" /></td></tr>
-<tr><th>Last name:</th><td><input type="text" name="last_name" value="Lennon" /></td></tr>
-<tr><th>Birthday:</th><td><input type="text" name="birthday" value="1940-10-9" /><input type="hidden" name="hidden_text" /></td></tr>
+<tr><th>First name</th><td><input type="text" name="first_name" value="John" /></td></tr>
+<tr><th>Last name</th><td><input type="text" name="last_name" value="Lennon" /></td></tr>
+<tr><th>Birthday</th><td><input type="text" name="birthday" value="1940-10-9" /><input type="hidden" name="hidden_text" /></td></tr>
 >>> print p.as_ul()
 <li><ul class="errorlist"><li>(Hidden field hidden_text) This field is required.</li></ul></li>
-<li>First name: <input type="text" name="first_name" value="John" /></li>
-<li>Last name: <input type="text" name="last_name" value="Lennon" /></li>
-<li>Birthday: <input type="text" name="birthday" value="1940-10-9" /><input type="hidden" name="hidden_text" /></li>
+<li>First name <input type="text" name="first_name" value="John" /></li>
+<li>Last name <input type="text" name="last_name" value="Lennon" /></li>
+<li>Birthday <input type="text" name="birthday" value="1940-10-9" /><input type="hidden" name="hidden_text" /></li>
 >>> print p.as_p()
 <ul class="errorlist"><li>(Hidden field hidden_text) This field is required.</li></ul>
-<p>First name: <input type="text" name="first_name" value="John" /></p>
-<p>Last name: <input type="text" name="last_name" value="Lennon" /></p>
-<p>Birthday: <input type="text" name="birthday" value="1940-10-9" /><input type="hidden" name="hidden_text" /></p>
+<p>First name <input type="text" name="first_name" value="John" /></p>
+<p>Last name <input type="text" name="last_name" value="Lennon" /></p>
+<p>Birthday <input type="text" name="birthday" value="1940-10-9" /><input type="hidden" name="hidden_text" /></p>
 
 A corner case: It's possible for a form to have only HiddenInputs.
 >>> class TestForm(Form):
@@ -2830,20 +2830,20 @@
 ...     field14 = CharField()
 >>> p = TestForm(auto_id=False)
 >>> print p
-<tr><th>Field1:</th><td><input type="text" name="field1" /></td></tr>
-<tr><th>Field2:</th><td><input type="text" name="field2" /></td></tr>
-<tr><th>Field3:</th><td><input type="text" name="field3" /></td></tr>
-<tr><th>Field4:</th><td><input type="text" name="field4" /></td></tr>
-<tr><th>Field5:</th><td><input type="text" name="field5" /></td></tr>
-<tr><th>Field6:</th><td><input type="text" name="field6" /></td></tr>
-<tr><th>Field7:</th><td><input type="text" name="field7" /></td></tr>
-<tr><th>Field8:</th><td><input type="text" name="field8" /></td></tr>
-<tr><th>Field9:</th><td><input type="text" name="field9" /></td></tr>
-<tr><th>Field10:</th><td><input type="text" name="field10" /></td></tr>
-<tr><th>Field11:</th><td><input type="text" name="field11" /></td></tr>
-<tr><th>Field12:</th><td><input type="text" name="field12" /></td></tr>
-<tr><th>Field13:</th><td><input type="text" name="field13" /></td></tr>
-<tr><th>Field14:</th><td><input type="text" name="field14" /></td></tr>
+<tr><th>Field1</th><td><input type="text" name="field1" /></td></tr>
+<tr><th>Field2</th><td><input type="text" name="field2" /></td></tr>
+<tr><th>Field3</th><td><input type="text" name="field3" /></td></tr>
+<tr><th>Field4</th><td><input type="text" name="field4" /></td></tr>
+<tr><th>Field5</th><td><input type="text" name="field5" /></td></tr>
+<tr><th>Field6</th><td><input type="text" name="field6" /></td></tr>
+<tr><th>Field7</th><td><input type="text" name="field7" /></td></tr>
+<tr><th>Field8</th><td><input type="text" name="field8" /></td></tr>
+<tr><th>Field9</th><td><input type="text" name="field9" /></td></tr>
+<tr><th>Field10</th><td><input type="text" name="field10" /></td></tr>
+<tr><th>Field11</th><td><input type="text" name="field11" /></td></tr>
+<tr><th>Field12</th><td><input type="text" name="field12" /></td></tr>
+<tr><th>Field13</th><td><input type="text" name="field13" /></td></tr>
+<tr><th>Field14</th><td><input type="text" name="field14" /></td></tr>
 
 Some Field classes have an effect on the HTML attributes of their associated
 Widget. If you set max_length in a CharField and its associated widget is
@@ -2856,10 +2856,10 @@
 ...    address = CharField()                                 # no max_length defined here
 >>> p = UserRegistration(auto_id=False)
 >>> print p.as_ul()
-<li>Username: <input type="text" name="username" maxlength="10" /></li>
-<li>Password: <input type="password" name="password" maxlength="10" /></li>
-<li>Realname: <input type="text" name="realname" maxlength="10" /></li>
-<li>Address: <input type="text" name="address" /></li>
+<li>Username <input type="text" name="username" maxlength="10" /></li>
+<li>Password <input type="password" name="password" maxlength="10" /></li>
+<li>Realname <input type="text" name="realname" maxlength="10" /></li>
+<li>Address <input type="text" name="address" /></li>
 
 If you specify a custom "attrs" that includes the "maxlength" attribute,
 the Field's max_length attribute will override whatever "maxlength" you specify
@@ -2869,8 +2869,8 @@
 ...    password = CharField(max_length=10, widget=PasswordInput)
 >>> p = UserRegistration(auto_id=False)
 >>> print p.as_ul()
-<li>Username: <input type="text" name="username" maxlength="10" /></li>
-<li>Password: <input type="password" name="password" maxlength="10" /></li>
+<li>Username <input type="text" name="username" maxlength="10" /></li>
+<li>Password <input type="password" name="password" maxlength="10" /></li>
 
 # Specifying labels ###########################################################
 
@@ -2883,11 +2883,11 @@
 ...    password2 = CharField(widget=PasswordInput, label='Password (again)')
 >>> p = UserRegistration(auto_id=False)
 >>> print p.as_ul()
-<li>Your username: <input type="text" name="username" maxlength="10" /></li>
-<li>Password1: <input type="password" name="password1" /></li>
-<li>Password (again): <input type="password" name="password2" /></li>
+<li>Your username <input type="text" name="username" maxlength="10" /></li>
+<li>Password1 <input type="password" name="password1" /></li>
+<li>Password (again) <input type="password" name="password2" /></li>
 
-Labels for as_* methods will only end in a colon if they don't end in other
+Labels for as_* methods will not add a colon to the label, regardless of the last character
 punctuation already.
 >>> class Questions(Form):
 ...    q1 = CharField(label='The first question')
@@ -2896,13 +2896,13 @@
 ...    q4 = CharField(label='Answer this question!')
 ...    q5 = CharField(label='The last question. Period.')
 >>> print Questions(auto_id=False).as_p()
-<p>The first question: <input type="text" name="q1" /></p>
+<p>The first question <input type="text" name="q1" /></p>
 <p>What is your name? <input type="text" name="q2" /></p>
 <p>The answer to life is: <input type="text" name="q3" /></p>
 <p>Answer this question! <input type="text" name="q4" /></p>
 <p>The last question. Period. <input type="text" name="q5" /></p>
 >>> print Questions().as_p()
-<p><label for="id_q1">The first question:</label> <input type="text" name="q1" id="id_q1" /></p>
+<p><label for="id_q1">The first question</label> <input type="text" name="q1" id="id_q1" /></p>
 <p><label for="id_q2">What is your name?</label> <input type="text" name="q2" id="id_q2" /></p>
 <p><label for="id_q3">The answer to life is:</label> <input type="text" name="q3" id="id_q3" /></p>
 <p><label for="id_q4">Answer this question!</label> <input type="text" name="q4" id="id_q4" /></p>
@@ -2914,7 +2914,7 @@
 ...    password = CharField(widget=PasswordInput, label=u'\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111')
 >>> p = UserRegistration(auto_id=False)
 >>> p.as_ul()
-u'<li>\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111: <input type="text" name="username" maxlength="10" /></li>\n<li>\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111: <input type="password" name="password" /></li>'
+u'<li>\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111 <input type="text" name="username" maxlength="10" /></li>\n<li>\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111 <input type="password" name="password" /></li>'
 
 If a label is set to the empty string for a field, that field won't get a label.
 >>> class UserRegistration(Form):
@@ -2923,11 +2923,11 @@
 >>> p = UserRegistration(auto_id=False)
 >>> print p.as_ul()
 <li> <input type="text" name="username" maxlength="10" /></li>
-<li>Password: <input type="password" name="password" /></li>
+<li>Password <input type="password" name="password" /></li>
 >>> p = UserRegistration(auto_id='id_%s')
 >>> print p.as_ul()
 <li> <input id="id_username" type="text" name="username" maxlength="10" /></li>
-<li><label for="id_password">Password:</label> <input type="password" name="password" id="id_password" /></li>
+<li><label for="id_password">Password</label> <input type="password" name="password" id="id_password" /></li>
 
 If label is None, Django will auto-create the label from the field name. This
 is default behavior.
@@ -2936,12 +2936,12 @@
 ...    password = CharField(widget=PasswordInput)
 >>> p = UserRegistration(auto_id=False)
 >>> print p.as_ul()
-<li>Username: <input type="text" name="username" maxlength="10" /></li>
-<li>Password: <input type="password" name="password" /></li>
+<li>Username <input type="text" name="username" maxlength="10" /></li>
+<li>Password <input type="password" name="password" /></li>
 >>> p = UserRegistration(auto_id='id_%s')
 >>> print p.as_ul()
-<li><label for="id_username">Username:</label> <input id="id_username" type="text" name="username" maxlength="10" /></li>
-<li><label for="id_password">Password:</label> <input type="password" name="password" id="id_password" /></li>
+<li><label for="id_username">Username</label> <input id="id_username" type="text" name="username" maxlength="10" /></li>
+<li><label for="id_password">Password</label> <input type="password" name="password" id="id_password" /></li>
 
 # Initial data ################################################################
 
@@ -2957,22 +2957,22 @@
 Here, we're not submitting any data, so the initial value will be displayed.
 >>> p = UserRegistration(auto_id=False)
 >>> print p.as_ul()
-<li>Username: <input type="text" name="username" value="django" maxlength="10" /></li>
-<li>Password: <input type="password" name="password" /></li>
+<li>Username <input type="text" name="username" value="django" maxlength="10" /></li>
+<li>Password <input type="password" name="password" /></li>
 
 Here, we're submitting data, so the initial value will *not* be displayed.
 >>> p = UserRegistration({}, auto_id=False)
 >>> print p.as_ul()
-<li><ul class="errorlist"><li>This field is required.</li></ul>Username: <input type="text" name="username" maxlength="10" /></li>
-<li><ul class="errorlist"><li>This field is required.</li></ul>Password: <input type="password" name="password" /></li>
+<li><ul class="errorlist"><li>This field is required.</li></ul>Username <input type="text" name="username" maxlength="10" /></li>
+<li><ul class="errorlist"><li>This field is required.</li></ul>Password <input type="password" name="password" /></li>
 >>> p = UserRegistration({'username': u''}, auto_id=False)
 >>> print p.as_ul()
-<li><ul class="errorlist"><li>This field is required.</li></ul>Username: <input type="text" name="username" maxlength="10" /></li>
-<li><ul class="errorlist"><li>This field is required.</li></ul>Password: <input type="password" name="password" /></li>
+<li><ul class="errorlist"><li>This field is required.</li></ul>Username <input type="text" name="username" maxlength="10" /></li>
+<li><ul class="errorlist"><li>This field is required.</li></ul>Password <input type="password" name="password" /></li>
 >>> p = UserRegistration({'username': u'foo'}, auto_id=False)
 >>> print p.as_ul()
-<li>Username: <input type="text" name="username" value="foo" maxlength="10" /></li>
-<li><ul class="errorlist"><li>This field is required.</li></ul>Password: <input type="password" name="password" /></li>
+<li>Username <input type="text" name="username" value="foo" maxlength="10" /></li>
+<li><ul class="errorlist"><li>This field is required.</li></ul>Password <input type="password" name="password" /></li>
 
 An 'initial' value is *not* used as a fallback if data is not provided. In this
 example, we don't provide a value for 'username', and the form raises a
@@ -2998,26 +2998,26 @@
 Here, we're not submitting any data, so the initial value will be displayed.
 >>> p = UserRegistration(initial={'username': 'django'}, auto_id=False)
 >>> print p.as_ul()
-<li>Username: <input type="text" name="username" value="django" maxlength="10" /></li>
-<li>Password: <input type="password" name="password" /></li>
+<li>Username <input type="text" name="username" value="django" maxlength="10" /></li>
+<li>Password <input type="password" name="password" /></li>
 >>> p = UserRegistration(initial={'username': 'stephane'}, auto_id=False)
 >>> print p.as_ul()
-<li>Username: <input type="text" name="username" value="stephane" maxlength="10" /></li>
-<li>Password: <input type="password" name="password" /></li>
+<li>Username <input type="text" name="username" value="stephane" maxlength="10" /></li>
+<li>Password <input type="password" name="password" /></li>
 
 The 'initial' parameter is meaningless if you pass data.
 >>> p = UserRegistration({}, initial={'username': 'django'}, auto_id=False)
 >>> print p.as_ul()
-<li><ul class="errorlist"><li>This field is required.</li></ul>Username: <input type="text" name="username" maxlength="10" /></li>
-<li><ul class="errorlist"><li>This field is required.</li></ul>Password: <input type="password" name="password" /></li>
+<li><ul class="errorlist"><li>This field is required.</li></ul>Username <input type="text" name="username" maxlength="10" /></li>
+<li><ul class="errorlist"><li>This field is required.</li></ul>Password <input type="password" name="password" /></li>
 >>> p = UserRegistration({'username': u''}, initial={'username': 'django'}, auto_id=False)
 >>> print p.as_ul()
-<li><ul class="errorlist"><li>This field is required.</li></ul>Username: <input type="text" name="username" maxlength="10" /></li>
-<li><ul class="errorlist"><li>This field is required.</li></ul>Password: <input type="password" name="password" /></li>
+<li><ul class="errorlist"><li>This field is required.</li></ul>Username <input type="text" name="username" maxlength="10" /></li>
+<li><ul class="errorlist"><li>This field is required.</li></ul>Password <input type="password" name="password" /></li>
 >>> p = UserRegistration({'username': u'foo'}, initial={'username': 'django'}, auto_id=False)
 >>> print p.as_ul()
-<li>Username: <input type="text" name="username" value="foo" maxlength="10" /></li>
-<li><ul class="errorlist"><li>This field is required.</li></ul>Password: <input type="password" name="password" /></li>
+<li>Username <input type="text" name="username" value="foo" maxlength="10" /></li>
+<li><ul class="errorlist"><li>This field is required.</li></ul>Password <input type="password" name="password" /></li>
 
 A dynamic 'initial' value is *not* used as a fallback if data is not provided.
 In this example, we don't provide a value for 'username', and the form raises a
@@ -3035,8 +3035,8 @@
 ...    password = CharField(widget=PasswordInput)
 >>> p = UserRegistration(initial={'username': 'babik'}, auto_id=False)
 >>> print p.as_ul()
-<li>Username: <input type="text" name="username" value="babik" maxlength="10" /></li>
-<li>Password: <input type="password" name="password" /></li>
+<li>Username <input type="text" name="username" value="babik" maxlength="10" /></li>
+<li>Password <input type="password" name="password" /></li>
 
 # Callable initial data ########################################################
 
@@ -3056,22 +3056,22 @@
 Here, we're not submitting any data, so the initial value will be displayed.
 >>> p = UserRegistration(initial={'username': initial_django}, auto_id=False)
 >>> print p.as_ul()
-<li>Username: <input type="text" name="username" value="django" maxlength="10" /></li>
-<li>Password: <input type="password" name="password" /></li>
+<li>Username <input type="text" name="username" value="django" maxlength="10" /></li>
+<li>Password <input type="password" name="password" /></li>
 
 The 'initial' parameter is meaningless if you pass data.
 >>> p = UserRegistration({}, initial={'username': initial_django}, auto_id=False)
 >>> print p.as_ul()
-<li><ul class="errorlist"><li>This field is required.</li></ul>Username: <input type="text" name="username" maxlength="10" /></li>
-<li><ul class="errorlist"><li>This field is required.</li></ul>Password: <input type="password" name="password" /></li>
+<li><ul class="errorlist"><li>This field is required.</li></ul>Username <input type="text" name="username" maxlength="10" /></li>
+<li><ul class="errorlist"><li>This field is required.</li></ul>Password <input type="password" name="password" /></li>
 >>> p = UserRegistration({'username': u''}, initial={'username': initial_django}, auto_id=False)
 >>> print p.as_ul()
-<li><ul class="errorlist"><li>This field is required.</li></ul>Username: <input type="text" name="username" maxlength="10" /></li>
-<li><ul class="errorlist"><li>This field is required.</li></ul>Password: <input type="password" name="password" /></li>
+<li><ul class="errorlist"><li>This field is required.</li></ul>Username <input type="text" name="username" maxlength="10" /></li>
+<li><ul class="errorlist"><li>This field is required.</li></ul>Password <input type="password" name="password" /></li>
 >>> p = UserRegistration({'username': u'foo'}, initial={'username': initial_django}, auto_id=False)
 >>> print p.as_ul()
-<li>Username: <input type="text" name="username" value="foo" maxlength="10" /></li>
-<li><ul class="errorlist"><li>This field is required.</li></ul>Password: <input type="password" name="password" /></li>
+<li>Username <input type="text" name="username" value="foo" maxlength="10" /></li>
+<li><ul class="errorlist"><li>This field is required.</li></ul>Password <input type="password" name="password" /></li>
 
 A callable 'initial' value is *not* used as a fallback if data is not provided.
 In this example, we don't provide a value for 'username', and the form raises a
@@ -3089,12 +3089,12 @@
 ...    password = CharField(widget=PasswordInput)
 >>> p = UserRegistration(auto_id=False)
 >>> print p.as_ul()
-<li>Username: <input type="text" name="username" value="django" maxlength="10" /></li>
-<li>Password: <input type="password" name="password" /></li>
+<li>Username <input type="text" name="username" value="django" maxlength="10" /></li>
+<li>Password <input type="password" name="password" /></li>
 >>> p = UserRegistration(initial={'username': initial_stephane}, auto_id=False)
 >>> print p.as_ul()
-<li>Username: <input type="text" name="username" value="stephane" maxlength="10" /></li>
-<li>Password: <input type="password" name="password" /></li>
+<li>Username <input type="text" name="username" value="stephane" maxlength="10" /></li>
+<li>Password <input type="password" name="password" /></li>
 
 # Help text ###################################################################
 
@@ -3105,20 +3105,20 @@
 ...    password = CharField(widget=PasswordInput, help_text='Choose wisely.')
 >>> p = UserRegistration(auto_id=False)
 >>> print p.as_ul()
-<li>Username: <input type="text" name="username" maxlength="10" /> e.g., user@example.com</li>
-<li>Password: <input type="password" name="password" /> Choose wisely.</li>
+<li>Username <input type="text" name="username" maxlength="10" /> e.g., user@example.com</li>
+<li>Password <input type="password" name="password" /> Choose wisely.</li>
 >>> print p.as_p()
-<p>Username: <input type="text" name="username" maxlength="10" /> e.g., user@example.com</p>
-<p>Password: <input type="password" name="password" /> Choose wisely.</p>
+<p>Username <input type="text" name="username" maxlength="10" /> e.g., user@example.com</p>
+<p>Password <input type="password" name="password" /> Choose wisely.</p>
 >>> print p.as_table()
-<tr><th>Username:</th><td><input type="text" name="username" maxlength="10" /><br />e.g., user@example.com</td></tr>
-<tr><th>Password:</th><td><input type="password" name="password" /><br />Choose wisely.</td></tr>
+<tr><th>Username</th><td><input type="text" name="username" maxlength="10" /><br />e.g., user@example.com</td></tr>
+<tr><th>Password</th><td><input type="password" name="password" /><br />Choose wisely.</td></tr>
 
 The help text is displayed whether or not data is provided for the form.
 >>> p = UserRegistration({'username': u'foo'}, auto_id=False)
 >>> print p.as_ul()
-<li>Username: <input type="text" name="username" value="foo" maxlength="10" /> e.g., user@example.com</li>
-<li><ul class="errorlist"><li>This field is required.</li></ul>Password: <input type="password" name="password" /> Choose wisely.</li>
+<li>Username <input type="text" name="username" value="foo" maxlength="10" /> e.g., user@example.com</li>
+<li><ul class="errorlist"><li>This field is required.</li></ul>Password <input type="password" name="password" /> Choose wisely.</li>
 
 help_text is not displayed for hidden fields. It can be used for documentation
 purposes, though.
@@ -3128,15 +3128,15 @@
 ...    next = CharField(widget=HiddenInput, initial='/', help_text='Redirect destination')
 >>> p = UserRegistration(auto_id=False)
 >>> print p.as_ul()
-<li>Username: <input type="text" name="username" maxlength="10" /> e.g., user@example.com</li>
-<li>Password: <input type="password" name="password" /><input type="hidden" name="next" value="/" /></li>
+<li>Username <input type="text" name="username" maxlength="10" /> e.g., user@example.com</li>
+<li>Password <input type="password" name="password" /><input type="hidden" name="next" value="/" /></li>
 
 Help text can include arbitrary Unicode characters.
 >>> class UserRegistration(Form):
 ...    username = CharField(max_length=10, help_text='ŠĐĆŽćžšđ')
 >>> p = UserRegistration(auto_id=False)
 >>> p.as_ul()
-u'<li>Username: <input type="text" name="username" maxlength="10" /> \u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111</li>'
+u'<li>Username <input type="text" name="username" maxlength="10" /> \u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111</li>'
 
 # Subclassing forms ###########################################################
 
@@ -3151,15 +3151,15 @@
 ...     instrument = CharField()
 >>> p = Person(auto_id=False)
 >>> print p.as_ul()
-<li>First name: <input type="text" name="first_name" /></li>
-<li>Last name: <input type="text" name="last_name" /></li>
-<li>Birthday: <input type="text" name="birthday" /></li>
+<li>First name <input type="text" name="first_name" /></li>
+<li>Last name <input type="text" name="last_name" /></li>
+<li>Birthday <input type="text" name="birthday" /></li>
 >>> m = Musician(auto_id=False)
 >>> print m.as_ul()
-<li>First name: <input type="text" name="first_name" /></li>
-<li>Last name: <input type="text" name="last_name" /></li>
-<li>Birthday: <input type="text" name="birthday" /></li>
-<li>Instrument: <input type="text" name="instrument" /></li>
+<li>First name <input type="text" name="first_name" /></li>
+<li>Last name <input type="text" name="last_name" /></li>
+<li>Birthday <input type="text" name="birthday" /></li>
+<li>Instrument <input type="text" name="instrument" /></li>
 
 Yes, you can subclass multiple forms. The fields are added in the order in
 which the parent classes are listed.
@@ -3173,11 +3173,11 @@
 ...     haircut_type = CharField()
 >>> b = Beatle(auto_id=False)
 >>> print b.as_ul()
-<li>First name: <input type="text" name="first_name" /></li>
-<li>Last name: <input type="text" name="last_name" /></li>
-<li>Birthday: <input type="text" name="birthday" /></li>
-<li>Instrument: <input type="text" name="instrument" /></li>
-<li>Haircut type: <input type="text" name="haircut_type" /></li>
+<li>First name <input type="text" name="first_name" /></li>
+<li>Last name <input type="text" name="last_name" /></li>
+<li>Birthday <input type="text" name="birthday" /></li>
+<li>Instrument <input type="text" name="instrument" /></li>
+<li>Haircut type <input type="text" name="haircut_type" /></li>
 
 # Forms with prefixes #########################################################
 
@@ -3199,9 +3199,9 @@
 ... }
 >>> p = Person(data, prefix='person1')
 >>> print 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" /></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" /></li>
-<li><label for="id_person1-birthday">Birthday:</label> <input type="text" name="person1-birthday" value="1940-10-9" id="id_person1-birthday" /></li>
+<li><label for="id_person1-first_name">First name</label> <input type="text" name="person1-first_name" value="John" id="id_person1-first_name" /></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" /></li>
+<li><label for="id_person1-birthday">Birthday</label> <input type="text" name="person1-birthday" value="1940-10-9" id="id_person1-birthday" /></li>
 >>> print p['first_name']
 <input type="text" name="person1-first_name" value="John" id="id_person1-first_name" />
 >>> print p['last_name']
@@ -3276,9 +3276,9 @@
 ...         return self.prefix and '%s-prefix-%s' % (self.prefix, field_name) or field_name
 >>> p = Person(prefix='foo')
 >>> print 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" /></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" /></li>
-<li><label for="id_foo-prefix-birthday">Birthday:</label> <input type="text" name="foo-prefix-birthday" id="id_foo-prefix-birthday" /></li>
+<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" /></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" /></li>
+<li><label for="id_foo-prefix-birthday">Birthday</label> <input type="text" name="foo-prefix-birthday" id="id_foo-prefix-birthday" /></li>
 >>> data = {
 ...     'foo-prefix-first_name': u'John',
 ...     'foo-prefix-last_name': u'Lennon',
@@ -3350,23 +3350,23 @@
 ...     file1 = FileField()
 >>> f = FileForm(auto_id=False)
 >>> print f
-<tr><th>File1:</th><td><input type="file" name="file1" /></td></tr>
+<tr><th>File1</th><td><input type="file" name="file1" /></td></tr>
 
 >>> f = FileForm(data={}, files={}, auto_id=False)
 >>> print f
-<tr><th>File1:</th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="file" name="file1" /></td></tr>
+<tr><th>File1</th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="file" name="file1" /></td></tr>
 
 >>> f = FileForm(data={}, files={'file1': {'filename': 'name', 'content':''}}, auto_id=False)
 >>> print f
-<tr><th>File1:</th><td><ul class="errorlist"><li>The submitted file is empty.</li></ul><input type="file" name="file1" /></td></tr>
+<tr><th>File1</th><td><ul class="errorlist"><li>The submitted file is empty.</li></ul><input type="file" name="file1" /></td></tr>
 
 >>> f = FileForm(data={}, files={'file1': 'something that is not a file'}, auto_id=False)
 >>> print f
-<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" /></td></tr>
+<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" /></td></tr>
 
 >>> f = FileForm(data={}, files={'file1': {'filename': 'name', 'content':'some content'}}, auto_id=False)
 >>> print f
-<tr><th>File1:</th><td><input type="file" name="file1" /></td></tr>
+<tr><th>File1</th><td><input type="file" name="file1" /></td></tr>
 >>> f.is_valid()
 True
 
@@ -3395,9 +3395,9 @@
 >>> print my_function('GET', {})
 <form action="" method="post">
 <table>
-<tr><th>Username:</th><td><input type="text" name="username" maxlength="10" /></td></tr>
-<tr><th>Password1:</th><td><input type="password" name="password1" /></td></tr>
-<tr><th>Password2:</th><td><input type="password" name="password2" /></td></tr>
+<tr><th>Username</th><td><input type="text" name="username" maxlength="10" /></td></tr>
+<tr><th>Password1</th><td><input type="password" name="password1" /></td></tr>
+<tr><th>Password2</th><td><input type="password" name="password2" /></td></tr>
 </table>
 <input type="submit" />
 </form>
@@ -3407,9 +3407,9 @@
 <form action="" method="post">
 <table>
 <tr><td colspan="2"><ul class="errorlist"><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" /></td></tr>
-<tr><th>Password1:</th><td><input type="password" name="password1" value="foo" /></td></tr>
-<tr><th>Password2:</th><td><input type="password" name="password2" value="bar" /></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" /></td></tr>
+<tr><th>Password1</th><td><input type="password" name="password1" value="foo" /></td></tr>
+<tr><th>Password2</th><td><input type="password" name="password2" value="bar" /></td></tr>
 </table>
 <input type="submit" />
 </form>
@@ -3435,23 +3435,23 @@
 displaying all the errors, including any that might not be associated with a
 particular field.
 >>> t = Template('''<form action="">
-... {{ 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>
+... {{ 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" />
 ... </form>''')
 >>> print t.render(Context({'form': UserRegistration(auto_id=False)}))
 <form action="">
-<p><label>Your username: <input type="text" name="username" maxlength="10" /></label></p>
-<p><label>Password: <input type="password" name="password1" /></label></p>
-<p><label>Password (again): <input type="password" name="password2" /></label></p>
+<p><label>Your username <input type="text" name="username" maxlength="10" /></label></p>
+<p><label>Password <input type="password" name="password1" /></label></p>
+<p><label>Password (again) <input type="password" name="password2" /></label></p>
 <input type="submit" />
 </form>
 >>> print 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" /></label></p>
-<ul class="errorlist"><li>This field is required.</li></ul><p><label>Password: <input type="password" name="password1" /></label></p>
-<ul class="errorlist"><li>This field is required.</li></ul><p><label>Password (again): <input type="password" name="password2" /></label></p>
+<p><label>Your username <input type="text" name="username" value="django" maxlength="10" /></label></p>
+<ul class="errorlist"><li>This field is required.</li></ul><p><label>Password <input type="password" name="password1" /></label></p>
+<ul class="errorlist"><li>This field is required.</li></ul><p><label>Password (again) <input type="password" name="password2" /></label></p>
 <input type="submit" />
 </form>
 
@@ -3460,16 +3460,16 @@
 'label', Django will use the field name with underscores converted to spaces,
 and the initial letter capitalized.
 >>> t = Template('''<form action="">
-... <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>
+... <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" />
 ... </form>''')
 >>> print t.render(Context({'form': UserRegistration(auto_id=False)}))
 <form action="">
-<p><label>Username: <input type="text" name="username" maxlength="10" /></label></p>
-<p><label>Password1: <input type="password" name="password1" /></label></p>
-<p><label>Password2: <input type="password" name="password2" /></label></p>
+<p><label>Username <input type="text" name="username" maxlength="10" /></label></p>
+<p><label>Password1 <input type="password" name="password1" /></label></p>
+<p><label>Password2 <input type="password" name="password2" /></label></p>
 <input type="submit" />
 </form>
 
@@ -3478,39 +3478,39 @@
 Recall from above that passing the "auto_id" argument to a Form gives each
 field an "id" attribute.
 >>> t = Template('''<form action="">
-... <p>{{ form.username.label_tag }}: {{ form.username }}</p>
-... <p>{{ form.password1.label_tag }}: {{ form.password1 }}</p>
-... <p>{{ form.password2.label_tag }}: {{ form.password2 }}</p>
+... <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" />
 ... </form>''')
 >>> print t.render(Context({'form': UserRegistration(auto_id=False)}))
 <form action="">
-<p>Username: <input type="text" name="username" maxlength="10" /></p>
-<p>Password1: <input type="password" name="password1" /></p>
-<p>Password2: <input type="password" name="password2" /></p>
+<p>Username <input type="text" name="username" maxlength="10" /></p>
+<p>Password1 <input type="password" name="password1" /></p>
+<p>Password2 <input type="password" name="password2" /></p>
 <input type="submit" />
 </form>
 >>> print 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" /></p>
-<p><label for="id_password1">Password1</label>: <input type="password" name="password1" id="id_password1" /></p>
-<p><label for="id_password2">Password2</label>: <input type="password" name="password2" id="id_password2" /></p>
+<p><label for="id_username">Username</label> <input id="id_username" type="text" name="username" maxlength="10" /></p>
+<p><label for="id_password1">Password1</label> <input type="password" name="password1" id="id_password1" /></p>
+<p><label for="id_password2">Password2</label> <input type="password" name="password2" id="id_password2" /></p>
 <input type="submit" />
 </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.password1.label_tag }}: {{ form.password1 }}</p>
-... <p>{{ form.password2.label_tag }}: {{ form.password2 }}</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" />
 ... </form>''')
 >>> print t.render(Context({'form': UserRegistration(auto_id=False)}))
 <form action="">
-<p>Username: <input type="text" name="username" maxlength="10" /><br />Good luck picking a username that doesn't already exist.</p>
-<p>Password1: <input type="password" name="password1" /></p>
-<p>Password2: <input type="password" name="password2" /></p>
+<p>Username <input type="text" name="username" maxlength="10" /><br />Good luck picking a username that doesn't already exist.</p>
+<p>Password1 <input type="password" name="password1" /></p>
+<p>Password2 <input type="password" name="password2" /></p>
 <input type="submit" />
 </form>
 >>> Template('{{ form.password1.help_text }}').render(Context({'form': UserRegistration(auto_id=False)}))
@@ -3530,31 +3530,31 @@
 template. If used on its own, it is displayed as a <ul> (or an empty string, if
 the list of errors is empty). You can also use it in {% if %} statements.
 >>> t = Template('''<form action="">
-... {{ 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>
+... {{ 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" />
 ... </form>''')
 >>> print 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" /></label></p>
-<p><label>Password: <input type="password" name="password1" value="foo" /></label></p>
-<p><label>Password (again): <input type="password" name="password2" value="bar" /></label></p>
+<p><label>Your username <input type="text" name="username" value="django" maxlength="10" /></label></p>
+<p><label>Password <input type="password" name="password1" value="foo" /></label></p>
+<p><label>Password (again) <input type="password" name="password2" value="bar" /></label></p>
 <input type="submit" />
 </form>
 >>> t = Template('''<form action="">
 ... {{ form.non_field_errors }}
-... {{ 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>
+... {{ 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" />
 ... </form>''')
 >>> print t.render(Context({'form': UserRegistration({'username': 'django', 'password1': 'foo', 'password2': 'bar'}, auto_id=False)}))
 <form action="">
 <ul class="errorlist"><li>Please make sure your passwords match.</li></ul>
-<p><label>Your username: <input type="text" name="username" value="django" maxlength="10" /></label></p>
-<p><label>Password: <input type="password" name="password1" value="foo" /></label></p>
-<p><label>Password (again): <input type="password" name="password2" value="bar" /></label></p>
+<p><label>Your username <input type="text" name="username" value="django" maxlength="10" /></label></p>
+<p><label>Password <input type="password" name="password1" value="foo" /></label></p>
+<p><label>Password (again) <input type="password" name="password2" value="bar" /></label></p>
 <input type="submit" />
 </form>
 
@@ -3780,7 +3780,7 @@
 ...     field1 = ComplexField(widget=w)
 >>> f = ComplexFieldForm()
 >>> print f
-<tr><th><label for="id_field1_0">Field1:</label></th><td><input type="text" name="field1_0" id="id_field1_0" />
+<tr><th><label for="id_field1_0">Field1</label></th><td><input type="text" name="field1_0" id="id_field1_0" />
 <select multiple="multiple" name="field1_1" id="id_field1_1">
 <option value="J">John</option>
 <option value="P">Paul</option>
@@ -3791,7 +3791,7 @@
 
 >>> f = ComplexFieldForm({'field1_0':'some text','field1_1':['J','P'], 'field1_2_0':'2007-04-25', 'field1_2_1':'06:24:00'})
 >>> print f
-<tr><th><label for="id_field1_0">Field1:</label></th><td><input type="text" name="field1_0" value="some text" id="id_field1_0" />
+<tr><th><label for="id_field1_0">Field1</label></th><td><input type="text" name="field1_0" value="some text" id="id_field1_0" />
 <select multiple="multiple" name="field1_1" id="id_field1_1">
 <option value="J" selected="selected">John</option>
 <option value="P" selected="selected">Paul</option>
@@ -3864,11 +3864,11 @@
 >>> data = dict(email='invalid')
 >>> f = CommentForm(data, auto_id=False, error_class=DivErrorList)
 >>> print f.as_p()
-<p>Name: <input type="text" name="name" maxlength="50" /></p>
+<p>Name <input type="text" name="name" maxlength="50" /></p>
 <div class="errorlist"><div class="error">Enter a valid e-mail address.</div></div>
-<p>Email: <input type="text" name="email" value="invalid" /></p>
+<p>Email <input type="text" name="email" value="invalid" /></p>
 <div class="errorlist"><div class="error">This field is required.</div></div>
-<p>Comment: <input type="text" name="comment" /></p>
+<p>Comment <input type="text" name="comment" /></p>
 
 #################################
 # Test multipart-encoded form #
Index: tests/regressiontests/forms/regressions.py
===================================================================
--- tests/regressiontests/forms/regressions.py	(revision 6345)
+++ tests/regressiontests/forms/regressions.py	(working copy)
@@ -9,7 +9,7 @@
 ...     f1 = CharField(max_length=10, widget=TextInput(attrs=extra_attrs))
 ...     f2 = CharField(widget=TextInput(attrs=extra_attrs))
 >>> TestForm(auto_id=False).as_p()
-u'<p>F1: <input type="text" class="special" name="f1" maxlength="10" /></p>\n<p>F2: <input type="text" class="special" name="f2" /></p>'
+u'<p>F1 <input type="text" class="special" name="f1" maxlength="10" /></p>\n<p>F2 <input type="text" class="special" name="f2" /></p>'
 
 #######################
 # Tests for form i18n #
@@ -21,7 +21,7 @@
 ...     username = CharField(max_length=10, label=ugettext_lazy('Username'))
 >>> f = SomeForm()
 >>> print f.as_p()
-<p><label for="id_username">Username:</label> <input id="id_username" type="text" name="username" maxlength="10" /></p>
+<p><label for="id_username">Username</label> <input id="id_username" type="text" name="username" maxlength="10" /></p>
 
 Translations are done at rendering time, so multi-lingual apps can define forms
 early and still send back the right translation.
@@ -29,10 +29,10 @@
 # XFAIL
 >>> activate('de')
 >>> print f.as_p()
-<p><label for="id_username">Benutzername:</label> <input id="id_username" type="text" name="username" maxlength="10" /></p>
+<p><label for="id_username">Benutzername</label> <input id="id_username" type="text" name="username" maxlength="10" /></p>
 >>> activate('pl')
 >>> f.as_p()
-u'<p><label for="id_username">Nazwa u\u017cytkownika:</label> <input id="id_username" type="text" name="username" maxlength="10" /></p>'
+u'<p><label for="id_username">Nazwa u\u017cytkownika</label> <input id="id_username" type="text" name="username" maxlength="10" /></p>'
 >>> deactivate()
 
 Unicode decoding problems...
@@ -41,7 +41,7 @@
 ...     somechoice = ChoiceField(choices=GENDERS, widget=RadioSelect(), label=u'\xc5\xf8\xdf')
 >>> f = SomeForm()
 >>> f.as_p()
-u'<p><label for="id_somechoice_0">\xc5\xf8\xdf:</label> <ul>\n<li><label><input type="radio" id="id_somechoice_0" value="\xc5" name="somechoice" /> En tied\xe4</label></li>\n<li><label><input type="radio" id="id_somechoice_1" value="\xf8" name="somechoice" /> Mies</label></li>\n<li><label><input type="radio" id="id_somechoice_2" value="\xdf" name="somechoice" /> Nainen</label></li>\n</ul></p>'
+u'<p><label for="id_somechoice_0">\xc5\xf8\xdf</label> <ul>\n<li><label><input type="radio" id="id_somechoice_0" value="\xc5" name="somechoice" /> En tied\xe4</label></li>\n<li><label><input type="radio" id="id_somechoice_1" value="\xf8" name="somechoice" /> Mies</label></li>\n<li><label><input type="radio" id="id_somechoice_2" value="\xdf" name="somechoice" /> Nainen</label></li>\n</ul></p>'
 
 Testing choice validation with UTF-8 bytestrings as input (these are the
 Russian abbreviations "мес." and "шт.".
@@ -57,7 +57,7 @@
 >>> activate('ru')
 >>> f = SomeForm({})
 >>> f.as_p()
-u'<ul class="errorlist"><li>\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435.</li></ul>\n<p><label for="id_somechoice_0">\xc5\xf8\xdf:</label> <ul>\n<li><label><input type="radio" id="id_somechoice_0" value="\xc5" name="somechoice" /> En tied\xe4</label></li>\n<li><label><input type="radio" id="id_somechoice_1" value="\xf8" name="somechoice" /> Mies</label></li>\n<li><label><input type="radio" id="id_somechoice_2" value="\xdf" name="somechoice" /> Nainen</label></li>\n</ul></p>'
+u'<ul class="errorlist"><li>\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435.</li></ul>\n<p><label for="id_somechoice_0">\xc5\xf8\xdf</label> <ul>\n<li><label><input type="radio" id="id_somechoice_0" value="\xc5" name="somechoice" /> En tied\xe4</label></li>\n<li><label><input type="radio" id="id_somechoice_1" value="\xf8" name="somechoice" /> Mies</label></li>\n<li><label><input type="radio" id="id_somechoice_2" value="\xdf" name="somechoice" /> Nainen</label></li>\n</ul></p>'
 >>> deactivate()
 
 Deep copying translated text shouldn't raise an error
