mirror of
				https://github.com/django/django.git
				synced 2025-10-31 07:57:51 +03:00 
			
		
		
		
	Fixed #9125 -- When displaying errors for a form with only hidden fields, make sure the resulting XHTML is correct.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@9067 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		
							parent
							
								
									eeb230aa1c
								
							
						
					
					
						commit
						9931c9e132
					
				|  | @ -171,6 +171,13 @@ class BaseForm(StrAndUnicode): | |||
|                 last_row = output[-1] | ||||
|                 # Chop off the trailing row_ender (e.g. '</td></tr>') and | ||||
|                 # insert the hidden fields. | ||||
|                 if not last_row.endswith(row_ender): | ||||
|                     # This can happen in the as_p() case (and possibly others | ||||
|                     # that users write): if there are only top errors, we may | ||||
|                     # not be able to conscript the last row for our purposes, | ||||
|                     # so insert a new, empty row. | ||||
|                     last_row = normal_row % {'errors': '', 'label': '', 'field': '', 'help_text': ''} | ||||
|                     output.append(last_row) | ||||
|                 output[-1] = last_row[:-len(row_ender)] + str_hidden + row_ender | ||||
|             else: | ||||
|                 # If there aren't any rows in the output, just append the | ||||
|  |  | |||
|  | @ -88,4 +88,18 @@ doesn't come back. | |||
| True | ||||
| >>> f.cleaned_data | ||||
| {'data': u'xyzzy'} | ||||
| 
 | ||||
| A form with *only* hidden fields that has errors is going to be very unusual. | ||||
| But we can try to make sure it doesn't generate invalid XHTML. In this case, | ||||
| the as_p() method is the tricky one, since error lists cannot be nested | ||||
| (validly) inside p elements. | ||||
| 
 | ||||
| >>> class HiddenForm(Form): | ||||
| ...     data = IntegerField(widget=HiddenInput) | ||||
| >>> f = HiddenForm({}) | ||||
| >>> f.as_p() | ||||
| u'<ul class="errorlist"><li>(Hidden field data) This field is required.</li></ul>\n<p> <input type="hidden" name="data" id="id_data" /></p>' | ||||
| >>> f.as_table() | ||||
| u'<tr><td colspan="2"><ul class="errorlist"><li>(Hidden field data) This field is required.</li></ul><input type="hidden" name="data" id="id_data" /></td></tr>' | ||||
| 
 | ||||
| """ | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user