This is set of form templates that implement a bootstrap "horizontal" style for Django forms. Handles all default field types, including a nice Pikaday wrapper for date time fields.
Installation:
pip install django-bootstrap-form-horizontal
Add to INSTALLED_APPS:
INSTALLED_APPS = (
...
"bootstrap_form_horizontal",
...
)
Usage:
{% include "bootstrap_form_horizontal.html" with form=myform %}
The template accepts the following context:
form: The form to render.submit: The text for a submit button with classbtn btn-primary. If not specified, no submit button is rendered.wrap: If not 0, will wrap form with<form method='post' action='' class='form-horizontal'>{% csrf_token %} ... </form>. Default:TrueIf you specifywrap=0, the form will be rendered without wrapping, and you must provide your ownclass='form-horizontal'wrapper.label_class: The grid class(es) to use on label elements. Default:col-sm-4.field_class: The grid class(es) to use on field elements. Default:col-sm-8.
To render properly, you must include various css/js. For convenience, vendored bootstrap is included here -- though you probably are already loading it in your project if you're interested in this app:
<!-- Bootstrap -->
<link rel='stylesheet' type='text/css' href='{{ STATIC_URL }}bootstrap_form_horizontal/vendor/bootstrap/css/bootstrap.css' />
<script type='text/javascript' src='{{ STATIC_URL }}bootstrap_form_horizontal/vendor/bootstrap/js/bootstrap.min.js'></script>
<!-- Pikaday -->
<link rel='stylesheet' type='text/css' href='{{ STATIC_URL }}bootstrap_form_horizontal/vendor/pikaday/css/pikaday.css' />
<script type='text/javascript' src='{{ STATIC_URL }}bootstrap_form_horizontal/vendor/pikaday/pikaday.js'></script>
<script type='text/javascript' src='{{ STATIC_URL }}bootstrap_form_horizontal/datewidgets.js'></script>
Wrap with form, and include submit button:
{% include "bootstrap_form_horizontal.html" with form=myform submit="Send it in" %}
Do your own form wrapping:
<form method='post' class='form-horizontal' action='something'>{% csrf_token %}
{% include "bootstrap_form_horizontal.html" with form=myform wrap=0 %}
<input type='submit' value='Go!' />
</form>
Change the responsive column classes:
{% include "bootstrap_form_horizontal.html" with label_class='col-sm-2 col-xs-4' field_class='col-xs-10 col-sm-8' %}
- Rolling your own form template?
_bootstrap_form_horizontal_field.html: renders a single label/field pair. Expectsfieldas context; also acceptslabel_classandfield_classas above._bootstrap_form_horizontal_non_field_errors.html: Displays non-field errors wrapped in bootstrap error classes. Expectsformas context; acceptslabel_classandfield_class.
File issues, download, etc. at https://github.com/yourcelf/django-bootstrap-form-horizontal.git.