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.