On Jun 3, 12:00 pm, Bill Freeman <[email protected]> wrote:
> If you can't use _html_output, then you have to duplicate a lot of
> it's functionality.
I'm able to get pretty far with the template tag approach. The trouble
is that BoundForms offer no way to directly add attributes, which I
think can only be included when defining the form field in question.
# from ... import format as form_format
@register.simple_tag
def format_form(form):
html = ''
field_maps = {
forms.CharField: form_format.text,
forms.ChoiceField: form_format.select
}
for name, field in form.fields.items():
for cls, handler in field_maps.items():
if isinstance(field, cls):
html += handler(name, forms.forms.BoundField(form, field,
name))
return html
# in format.py
def flatten(items):
return ''.join(items)
def wrapper(name, field, type, wrapped):
return '<div class="input %s">%s</div>' % (type, flatten(wrapped))
def label(name, field):
# First bit of duplication
if not field.label.endswith(':'):
field.label += ':'
return field.label_tag()
def text(name, field):
return wrapper(name, field, 'text', (
label(name, field),
unicode(field)
))
def select(name, field):
return wrapper(name, field, 'select', (
label(name, field),
unicode(field)
))
Thomas
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en.