newforms: Added BoundField.as_hidden()

git-svn-id: http://code.djangoproject.com/svn/django/trunk@4145 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Adrian Holovaty 2006-11-30 03:58:25 +00:00
parent d506b90163
commit 4dca65cdfc
2 changed files with 15 additions and 3 deletions

View File

@ -5,7 +5,7 @@ Form classes
from django.utils.datastructures import SortedDict from django.utils.datastructures import SortedDict
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 from widgets import TextInput, Textarea, HiddenInput
from util import ErrorDict, ErrorList, ValidationError from util import ErrorDict, ErrorList, ValidationError
NON_FIELD_ERRORS = '__all__' NON_FIELD_ERRORS = '__all__'
@ -194,6 +194,12 @@ class BoundField(object):
"Returns a string of HTML for representing this as a <textarea>." "Returns a string of HTML for representing this as a <textarea>."
return self.as_widget(Textarea(), attrs) return self.as_widget(Textarea(), attrs)
def as_hidden(self, attrs=None):
"""
Returns a string of HTML for representing this as an <input type="hidden">.
"""
return self.as_widget(HiddenInput(), attrs)
def _data(self): def _data(self):
"Returns the data for this BoundField, or None if it wasn't given." "Returns the data for this BoundField, or None if it wasn't given."
return self._form.data.get(self._name, None) return self._form.data.get(self._name, None)

View File

@ -1436,11 +1436,14 @@ Any Field can have a Widget class passed to its constructor:
>>> print f['message'] >>> print f['message']
<textarea name="message"></textarea> <textarea name="message"></textarea>
as_textarea() and as_text() are shortcuts for changing the output widget type: as_textarea(), as_text() and as_hidden() are shortcuts for changing the output
widget type:
>>> f['subject'].as_textarea() >>> f['subject'].as_textarea()
u'<textarea name="subject"></textarea>' u'<textarea name="subject"></textarea>'
>>> f['message'].as_text() >>> f['message'].as_text()
u'<input type="text" name="message" />' u'<input type="text" name="message" />'
>>> f['message'].as_hidden()
u'<input type="hidden" name="message" />'
The 'widget' parameter to a Field can also be an instance: The 'widget' parameter to a Field can also be an instance:
>>> class ContactForm(Form): >>> class ContactForm(Form):
@ -1450,7 +1453,8 @@ The 'widget' parameter to a Field can also be an instance:
>>> print f['message'] >>> print f['message']
<textarea rows="80" cols="20" name="message"></textarea> <textarea rows="80" cols="20" name="message"></textarea>
Instance-level attrs are *not* carried over to as_textarea() and as_text(): Instance-level attrs are *not* carried over to as_textarea(), as_text() and
as_hidden():
>>> f['message'].as_text() >>> f['message'].as_text()
u'<input type="text" name="message" />' u'<input type="text" name="message" />'
>>> f = ContactForm({'subject': 'Hello', 'message': 'I love you.'}) >>> f = ContactForm({'subject': 'Hello', 'message': 'I love you.'})
@ -1458,6 +1462,8 @@ u'<input type="text" name="message" />'
u'<textarea name="subject">Hello</textarea>' u'<textarea name="subject">Hello</textarea>'
>>> f['message'].as_text() >>> f['message'].as_text()
u'<input type="text" name="message" value="I love you." />' u'<input type="text" name="message" value="I love you." />'
>>> f['message'].as_hidden()
u'<input type="hidden" name="message" value="I love you." />'
For a form with a <select>, use ChoiceField: For a form with a <select>, use ChoiceField:
>>> class FrameworkForm(Form): >>> class FrameworkForm(Form):