Effortlessly style all of your Django forms and form fields with Semantic UI wrappers.
- Install this
django-semanticui-forms
with pip or git.
pip install django-semanticui-forms
- Add
semanticuiforms
to yourINSTALLED_APPS
. - Load the templatetags into your template
{% load semanticui %}
To render a form, it's as simple as {% render_form my_form %}
It is possible to render each field individually allowing for more
customization within the template. {% render_field my_form.field %}
Form attributes given to the template tag that are not specified for internal use are passed onto each field.
It is possible to exclude fields from render_form
using the exclude
parameter.
Fields to be excluded should be separated by commas.
{% render_form my_form exclude='field1,field3' %}
For example: {% render_form my_form name='Hello' %}
will add a name attribute
to each field in that form.
For good use: {% render_form my_form _help=1 %}
will display the field's
help_text on all fields.
Any attribute can be assigned to most fields. This can be done by either assigning within the form class or on-the-fly in the template.
In form class
field = forms.CharField(widget=forms.TextInput(attrs={"value": "Testing"}))
In template tag
{% render_field my_form.field value='My Value' placeholder='Put your text here!' %}
Specific attributes can modify how your fields are rendered. Private attributes
start with a _
and will not be added to the field's attributes. These attributes
can be set in the form class or as an argument like above.
_no_label
: Do not show label_no_required
: Do not show required asterisk_no_errors
: Do not show inline errors_inline
: Adds inline class to field_field_class
: Allows for custom field classes_override
: Render as a different input type_style
: Stylize specific fields (BoleanField, ChoiceField)BooleanField
: set to 'toggle' or 'slider'ChoiceField
: set to 'search' or 'multiple' and more
_icon
: Put icon on field_help
: Displayhelp_text
if available_align
: Used with_icon
, which side icon is on; not required
Icons can be added to input fields easily. Add the attribute _icon
and
optionally _align
to your arguments.
{% render_field my_form.field _icon='star' _align='left' %}
Overriding the function that renders the field is done using the _override
attribute. This is useful for things like using CountrySelect
as it is
not its own field type.
CountrySelect
CountrySelect
from the django-countries
package can be used to create a nice
field that displays a list of countries alongside their flags, to access it you
must set the _override
attribute to CountrySelect
.
Icon ChoiceField
IconSelect
can be used with overriding just like CountrySelect
. This
field is useful since icons can be placed next to the values in the field.
# Python
# ("key", "value|icon")
choices = (
("male", "Male|man"),
("female", "Female|woman"),
("other", "Other|genderless"),
)
# Template
{% render_field my_form.gender _override='IconSelect' %}
- Create a virtual environment.
virtualenv -p $(which python3) .env
- Source the activation script.
source .env/bin/activate
- Set current directory to
examples
app and then install Python requirements.
pip install -r requirements.txt
- Make and run migrations for testing purposes.
python manage.py makemigrations
python manage.py migrate
- Run tests.
python manage.py test semanticuiforms