Metadata-Version: 2.1
Name: django-fsforms
Version: 6.0.0
Summary: A reusable Django application for rendering forms with Foundation for Sites.
Home-page: https://forge.cliss21.org/cliss21/django-fsforms
Author: Jérôme Lebleu
Author-email: jerome.lebleu@cliss21.org
License: GNU AGPL-3
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: Django
Classifier: Framework :: Django :: 1.11
Classifier: Framework :: Django :: 2.0
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6

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
------------

1. Install Foundation Forms for Django:

   ::

      pip install django-fsforms

2. Add it to the ``INSTALLED_APPS`` in your ``settings.py``:

   .. code:: python

      INSTALLED_APPS = (
          ...
          'fsforms',
          ...
      )

3. 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 %}

   <form action="/url/to/submit/" method="post">
     {% csrf_token %}
     <ul class="no-bullet">
       <li>{% fsfield form.simple_field %}</li>
       <li>{% fsfield form.other_field label_class="my-field" %}</li>
     </ul>
     <div class="button-holder">
       <button type="submit" class="button">Submit</button>
     </div>
   </form>

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.


