Skip to main content

Django reusable app to simplify form construction

Project description

https://github.com/idlesign/django-siteforms

release lic ci coverage

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

https://django-siteforms.readthedocs.org/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-siteforms-0.1.0.tar.gz (17.4 kB view details)

Uploaded Source

Built Distribution

django_siteforms-0.1.0-py2.py3-none-any.whl (16.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file django-siteforms-0.1.0.tar.gz.

File metadata

  • Download URL: django-siteforms-0.1.0.tar.gz
  • Upload date:
  • Size: 17.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/2.7

File hashes

Hashes for django-siteforms-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c55866455c4873221dd569b52dc587b4ea8fa4306ed0ac9960ead43e227aac94
MD5 fe443f52e21b205d8ae25737243a2c9d
BLAKE2b-256 56721221b76ec75cbeeb7531796b82fee5d35d7164eb78d38f5a457a73d4283e

See more details on using hashes here.

File details

Details for the file django_siteforms-0.1.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for django_siteforms-0.1.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 3081339a7c3fc5b188e77f08a5c65b6ab54f0ba05a184121006d8c880e486b5c
MD5 7bcd873cd3f4aac011e353c48d1eb9e3
BLAKE2b-256 5a47545047761bfb4b14678dbaa06df1e4ab3a0eccee922e43fcc16e3848a1bd

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page