Smiple Django form formating.
Formit provides a template tag library for django to ease the formating of forms.
- Django 1.11, 1.10
- django-classy-tags for managing template tags.
Install using pip:
pip install django-formit
Then add formit
to INSTALLED_APPS
.
To use Formit add your templates:
{% load formit_tags %}
{# To render the form pass in the string path or form instance. #}
{% form 'contact.forms.ContactForm' action="/" method="get" button="Send" %}
{# To render the form with custom contents. #}
{% form_block instance %}
<h3>Contact form</h3>
{% fieldset %}
{% endform_block %}
{# To render a custom form without any formating. #}
{% form_block instance blank=True %}
{% csrf_token %}
<h3>Contact form</h3>
<div class="column">
{% fieldset fields=form.visible_fields|slice:":3" %}
</div>
<div class="column">
{% fieldset fields=form.visible_fields|slice:"3:" %}
</div>
{% fieldset fields=form.hidden_fields %}
<button>Send</button>
{% endform_block %}
{# You can separate the rendering of visible and hidden fields. #}
{% fieldset visible_fields=instance.visible_fields hidden_fields=instance.hidden_fields %}
{# or to automatically extract them from a form. #}
{% fieldset form=instance %}
{# To render a single field #}
{% field instance.visible_fields.0 placeholder="Enter your name" %}
Fieldset tags can also be used without any arguments. In that case form
from the context will be used,
which is automatically available inside the form
or form_block
tag.
Templates available to override in templates/formit/*
:
form.html
fieldset.html
field.html
You can specify custom templates for each field widget by adding a template with lowercase class name of the widget.
For example formit/fields/textinput.html
will render a TextInput
widget.