Index: django/forms/forms.py
===================================================================
--- django/forms/forms.py	(revision 14587)
+++ django/forms/forms.py	(working copy)
@@ -151,6 +151,7 @@
             else:
                 # Create a 'class="..."' atribute if the row should have any
                 # CSS classes applied.
+                # Added to container DOM element (e.g. <li>)
                 css_classes = bf.css_classes()
                 if css_classes:
                     html_class_attr = ' class="%s"' % css_classes
@@ -432,6 +433,13 @@
             else:
                 attrs['id'] = self.html_initial_id
 
+        # Create a 'class="..."' atribute if the row should have any
+        # CSS classes applied.
+        # Added to entry DOM element (e.g. <input>)
+        css_classes = self.css_classes(attrs.get("class", None))
+        if css_classes:
+            attrs["class"]=css_classes
+
         if not self.form.is_bound:
             data = self.form.initial.get(self.name, self.field.initial)
             if callable(data):
Index: tests/regressiontests/forms/tests/forms.py
===================================================================
--- tests/regressiontests/forms/tests/forms.py	(revision 14587)
+++ tests/regressiontests/forms/tests/forms.py	(working copy)
@@ -1672,35 +1672,39 @@
         p.error_css_class = 'error'
         p.required_css_class = 'required'
 
-        self.assertEqual(p.as_ul(), """<li class="required error"><ul class="errorlist"><li>This field is required.</li></ul><label for="id_name">Name:</label> <input type="text" name="name" id="id_name" /></li>
-<li class="required"><label for="id_is_cool">Is cool:</label> <select name="is_cool" id="id_is_cool">
+<input type="text" name="name" id="id_name" />
+        self.assertEqual(p.as_ul(), """<li class="required error"><ul class="errorlist"><li>This field is required.</li></ul><label for="id_name">Name:</label> <input class="required error" type="text" name="name" id="id_name" /></li>
+<li class="required"><label for="id_is_cool">Is cool:</label> <select class="required" name="is_cool" id="id_is_cool">
 <option value="1" selected="selected">Unknown</option>
 <option value="2">Yes</option>
 <option value="3">No</option>
 </select></li>
 <li><label for="id_email">Email:</label> <input type="text" name="email" id="id_email" /></li>
-<li class="required error"><ul class="errorlist"><li>This field is required.</li></ul><label for="id_age">Age:</label> <input type="text" name="age" id="id_age" /></li>""")
+<li class="required error"><ul class="errorlist"><li>This field is required.</li></ul><label for="id_age">Age:</label> <input class="required error" type="text" name="age" id="id_age" /></li>""")
 
         self.assertEqual(p.as_p(), """<ul class="errorlist"><li>This field is required.</li></ul>
-<p class="required error"><label for="id_name">Name:</label> <input type="text" name="name" id="id_name" /></p>
-<p class="required"><label for="id_is_cool">Is cool:</label> <select name="is_cool" id="id_is_cool">
+<p class="required error"><label for="id_name">Name:</label> <input class="required error" type="text" name="name" id="id_name" /></p>
+<p class="required"><label for="id_is_cool">Is cool:</label> <select class="required" name="is_cool" id="id_is_cool">
 <option value="1" selected="selected">Unknown</option>
 <option value="2">Yes</option>
 <option value="3">No</option>
 </select></p>
 <p><label for="id_email">Email:</label> <input type="text" name="email" id="id_email" /></p>
 <ul class="errorlist"><li>This field is required.</li></ul>
-<p class="required error"><label for="id_age">Age:</label> <input type="text" name="age" id="id_age" /></p>""")
+<p class="required error"><label for="id_age">Age:</label> <input class="required error" type="text" name="age" id="id_age" /></p>""")
 
-        self.assertEqual(p.as_table(), """<tr class="required error"><th><label for="id_name">Name:</label></th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="text" name="name" id="id_name" /></td></tr>
-<tr class="required"><th><label for="id_is_cool">Is cool:</label></th><td><select name="is_cool" id="id_is_cool">
+        self.assertEqual(p.as_table(), """<tr class="required error"><th><label for="id_name">Name:</label></th><td><ul class="errorlist"><li>This field is required.</li></ul><input class="required error" type="text" name="name" id="id_name" /></td></tr>
+<tr class="required"><th><label for="id_is_cool">Is cool:</label></th><td><select class="required" name="is_cool" id="id_is_cool">
 <option value="1" selected="selected">Unknown</option>
 <option value="2">Yes</option>
 <option value="3">No</option>
 </select></td></tr>
 <tr><th><label for="id_email">Email:</label></th><td><input type="text" name="email" id="id_email" /></td></tr>
-<tr class="required error"><th><label for="id_age">Age:</label></th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="text" name="age" id="id_age" /></td></tr>""")
+<tr class="required error"><th><label for="id_age">Age:</label></th><td><ul class="errorlist"><li>This field is required.</li></ul><input class="required error" type="text" name="age" id="id_age" /></td></tr>""")
 
+        # render one bound field - case http://docs.djangoproject.com/en/dev/topics/forms/#looping-over-the-form-s-fields
+        self.assertEqual(unicode(p["name"]), '<input class="required error" type="text" name="name" id="id_name" />')
+
     def test_label_split_datetime_not_displayed(self):
         class EventForm(Form):
             happened_at = SplitDateTimeField(widget=widgets.SplitHiddenDateTimeWidget)
