Django reusable app to simplify form construction
Project description
https://github.com/idlesign/django-siteforms
Description
Django reusable app to simplify form construction
For those who consider maintaining templates-based forms solutions for Django a burden.
Features:
Full form rendering support, including prolog and submit button
Field groups
Declarative attributes for elements
Simplified declarative forms layout, allowing fields ordering
Aria-friendly (Accessible Rich Internet Applications)
Supported styling:
No CSS
Bootstrap 4
Usage
To render a form in templates just address a variable, e.g. <div>{{ form }}</div>.
Basic
Let’s show how to build a simple form.
from django.shortcuts import render
from siteforms.composers.bootstrap4 import Bootstrap4
from siteforms.toolbox import ModelForm
class MyForm(ModelForm):
"""This form will show us how siteforms works."""
disabled_fields = {'somefield'} # One way of disabling fields.
hidden_fields = {'otherfield'} # One way of hiding fields.
class Composer(Bootstrap4):
"""This will instruct siteforms to compose this
form using Bootstrap 4 styling.
"""
class Meta:
model = MyModel # Suppose you have a model class already.
fields = '__all__'
def my_view(request):
# Initialize form using data from POST.
my_form = MyForm(request=request, src='POST')
is_valid = form.is_valid()
return render(request, 'mytemplate.html', {'form': my_form})
Composer options
Now let’s see how to tune our form.
from siteforms.composers.bootstrap4 import Bootstrap4, FORM, ALL_FIELDS
class Composer(Bootstrap4):
opt_size='sm', # Bootstrap 4 has sizes, so let's make our form small.
# Element (fields, groups, form, etc.) attributes are ruled by `attrs`.
# Let's add rows=2 to our `contents` model field.
attrs={'contents': {'rows': 2}},
# To group fields into named groups describe them in `groups`.
groups={
'basic': 'Basic attributes',
'other': 'Other fields',
},
# We apply custom layout to our form.
layout = {
FORM: {
'basic': [ # First we place `basic` group.
['title', 'date_created'], # These two fields go into a row.
'contents', # This one field goes into a separate row.
],
# We place all the rest fields into `other` group.
'other': ALL_FIELDS,
}
}
Documentation
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django_siteforms-0.1.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3081339a7c3fc5b188e77f08a5c65b6ab54f0ba05a184121006d8c880e486b5c |
|
MD5 | 7bcd873cd3f4aac011e353c48d1eb9e3 |
|
BLAKE2b-256 | 5a47545047761bfb4b14678dbaa06df1e4ab3a0eccee922e43fcc16e3848a1bd |