Foundation Forms for Django
A reusable Django application for rendering forms with Foundation for Sites <http://foundation.zurb.com/sites/docs/>__.
Requirements
- Python 3.5, 3.6 and 3.7
- Django 2.0.x, 2.1.x and 2.2.x (Jinja2 is not supported yet)
- Foundation for Sites 6.x
Note that this application does not include Foundation for Sites assets
so that you can customize it as you need. Get started by reading its
documentation <http://foundation.zurb.com/sites/getting-started.html>__!
Features
- Displays the field label as well as its help text
- Renders the Django base Widgets following the
Forms component <http://foundation.zurb.com/sites/docs/forms.html>__\ ’s
guidelines
- Shows the field errors as needed and sets the proper CSS classes on
the field label and the input
Installation
-
Install Foundation Forms for Django:
::
pip install django-fsforms
-
Add it to the INSTALLED_APPS in your settings.py:
.. code:: python
INSTALLED_APPS = (
...
'fsforms',
...
)
-
Set the FORM_RENDERER in your settings.py to use
fsforms\ ’ one:
-
If you are using Django templates:
.. code:: python
FORM_RENDERER = 'fsforms.renderers.DjangoTemplates'
-
If you are using TemplateSetting as form renderer, you just
have to ensure that the fsforms templates will be sourced
before the built-in widgets templates directory.
Note that this step is required since Django is loading templates
first from the built-in form templates directory in django/forms
when using those backends (see the Built-in-template form renderers’ doc <https://docs.djangoproject.com/en/stable/ref/forms/renderers/#built-in-template-form-renderers>__).
Usage
In your template, you will just have to load fsforms then use the
fsfield tag to render a form field.
.. code:: django
{% load fsforms %}
{% csrf_token %}
- {% fsfield form.simple_field %}
- {% fsfield form.other_field label_class="my-field" %}
Submit
Here are the special arguments you can pass to the fsfield tag: -
show_label: a boolean which turns on or off the label output. Note
that label of choices widgets will always be displayed. -
label_class: a string which contains additional CSS classes to apply
to the label element. - show_errors: a boolean which turns on or off
the field errors’ output as well as the CSS classes applied to the
elements - e.g. is-invalid-input and is-invalid-label. Default
is True. - as_list: a boolean which controls the rendering of
choices widgets - i.e. RadioSelect and CheckboxSelectMultiple. When set
to True - the default, the fields will be rendered inline and
wrapped inside a fieldset as suggested by the Forms component.
Otherwise, they will be rendered as a list.
All the remaining arguments will be added to the widget attributes. As
regards the required one, you can alter its value too but only with
client-side effect. It means that if a field is defined as required in
the form class and you pass required=False to the tag, it will
appear as non-required to the user but will still be validated at the
form’s submission.
License
You can use this under GNU AGPLv3+. See LICENSE <LICENSE>__ file for
details.
Changelog
[6.0.0] - 2019-09-23
Fixed
- Add compatibility for Django >= 2.1 and Python 3.5
[6.0.0rc2] - 2018-04-11
-----------------------
Added
fsfield tag to render a form field using Foundation Forms
structure.