newforms: Added attrs optional argument to BoundForm.label_tag()
git-svn-id: http://code.djangoproject.com/svn/django/trunk@4369 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
8f8b77bb55
commit
a154d94e45
|
@ -5,7 +5,7 @@ Form classes
|
||||||
from django.utils.datastructures import SortedDict, MultiValueDict
|
from django.utils.datastructures import SortedDict, MultiValueDict
|
||||||
from django.utils.html import escape
|
from django.utils.html import escape
|
||||||
from fields import Field
|
from fields import Field
|
||||||
from widgets import TextInput, Textarea, HiddenInput, MultipleHiddenInput
|
from widgets import flatatt, TextInput, Textarea, HiddenInput, MultipleHiddenInput
|
||||||
from util import StrAndUnicode, ErrorDict, ErrorList, ValidationError
|
from util import StrAndUnicode, ErrorDict, ErrorList, ValidationError
|
||||||
|
|
||||||
__all__ = ('BaseForm', 'Form')
|
__all__ = ('BaseForm', 'Form')
|
||||||
|
@ -247,17 +247,20 @@ class BoundField(StrAndUnicode):
|
||||||
return self.field.widget.value_from_datadict(self.form.data, self.html_name)
|
return self.field.widget.value_from_datadict(self.form.data, self.html_name)
|
||||||
data = property(_data)
|
data = property(_data)
|
||||||
|
|
||||||
def label_tag(self, contents=None):
|
def label_tag(self, contents=None, attrs=None):
|
||||||
"""
|
"""
|
||||||
Wraps the given contents in a <label>, if the field has an ID attribute.
|
Wraps the given contents in a <label>, if the field has an ID attribute.
|
||||||
Does not HTML-escape the contents. If contents aren't given, uses the
|
Does not HTML-escape the contents. If contents aren't given, uses the
|
||||||
field's HTML-escaped label.
|
field's HTML-escaped label.
|
||||||
|
|
||||||
|
If attrs are given, they're used as HTML attributes on the <label> tag.
|
||||||
"""
|
"""
|
||||||
contents = contents or escape(self.label)
|
contents = contents or escape(self.label)
|
||||||
widget = self.field.widget
|
widget = self.field.widget
|
||||||
id_ = widget.attrs.get('id') or self.auto_id
|
id_ = widget.attrs.get('id') or self.auto_id
|
||||||
if id_:
|
if id_:
|
||||||
contents = '<label for="%s">%s</label>' % (widget.id_for_label(id_), contents)
|
attrs = attrs and flatatt(attrs) or ''
|
||||||
|
contents = '<label for="%s"%s>%s</label>' % (widget.id_for_label(id_), attrs, contents)
|
||||||
return contents
|
return contents
|
||||||
|
|
||||||
def _is_hidden(self):
|
def _is_hidden(self):
|
||||||
|
|
|
@ -2593,6 +2593,15 @@ field an "id" attribute.
|
||||||
<input type="submit" />
|
<input type="submit" />
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
The label_tag() method takes an optional attrs argument: a dictionary of HTML
|
||||||
|
attributes to add to the <label> tag.
|
||||||
|
>>> f = UserRegistration(auto_id='id_%s')
|
||||||
|
>>> for bf in f:
|
||||||
|
... print bf.label_tag(attrs={'class': 'pretty'})
|
||||||
|
<label for="id_username" class="pretty">Username</label>
|
||||||
|
<label for="id_password1" class="pretty">Password1</label>
|
||||||
|
<label for="id_password2" class="pretty">Password2</label>
|
||||||
|
|
||||||
To display the errors that aren't associated with a particular field -- e.g.,
|
To display the errors that aren't associated with a particular field -- e.g.,
|
||||||
the errors caused by Form.clean() -- use {{ form.non_field_errors }} in the
|
the errors caused by Form.clean() -- use {{ form.non_field_errors }} in the
|
||||||
template. If used on its own, it is displayed as a <ul> (or an empty string, if
|
template. If used on its own, it is displayed as a <ul> (or an empty string, if
|
||||||
|
|
Loading…
Reference in New Issue