Render individual form fields
You want to render individual form fields in templates
You can use the
render() method for individual fields to render the fields in your template.
Let’s assume you want to create a name/surname form. Very simple, with only two fields, and no validation, just for testing purposes.
from web import form simple_form = form.Form( form.Textbox('name', description='Name'), form.Textbox('surname', description='Surname'), )
Usually you would either use
simple_form.render_css(). But what if you want to render individual form fields one by one, so you can have more control over how it appears in your template? For that, you can use the
render() method on individual fields.
We have defined two fields with names
surname. Those names automatically become attributes of
>>> simple_form.name.render() '<input type="text" name="name" id="name" />' >>> simple_form.surname.render() '<input type="text" name="surname" id="surname" />'
You can also render individual descriptions in a similar way:
>>> simple_form.surname.description 'Surname'
What if you have a small template snippet (partial template) that you’d like to use universally for all form fields you have defined? You can iterate fields by using the
inputs attribute of your form object. Here’s an example:
>>> for input in simple_form.inputs: ... print input.description ... print input.render() ... Name <input type="text" name="name" id="name" /> Surname <input type="text" name="surname" id="surname" />