I definitely going mad about forms in Django. They keep all layout buisness in python code.
Dragan Babić make a simple yet wonderful form css+jquery framework, called uniforms. I liked it a lot. In this app I tried to save all original Dragan's work and adapt to it.
Since I met great app, django-crispy-forms (ex. django-uni-forms), I promised to myself to do something like that but templates. And I did.
Django way:
<form action="/contact/" method="post">
{{ form.non_field_errors }}
{% for field in form %}
<div class="fieldWrapper">
{{ field.errors }}
{{ field.label }} {{ field }}
{% if field.help_text %}
<p class="formHint">{{ field.help_text }}</p>
{% emdif %}
</div>
{% endfor %}
{% csrf_token %}
</form>
Zenforms way:
{% izenform form %}
or:
<form action="." method="post">
{% izenform form1 options no_form_tag=1 %}
{% izenform form2 options no_form_tag=1 %}
<input type="submit" />
</form>
Regroup fields? as you wish:
{% zenform form %}
{% fieldset 'username' title 'User data' %}
{% multifield 'phone1' 'phone2' as phones label 'Phones' %}
{% fieldset 'first_name' 'last_name' phones %}
{% fieldset unused_fields title 'Rest stuff' %} <!-- you can foget something, zenforms can take care about it -->
{% endzenform %}
Moreover, you can include read-only values from Django models:
{% readonly admin 'username' 'last_name' label 'Information' %}
See full documentation.