Layout

Usage

The layout is to help control the form layout in Python code.

This feature is inspired from django-crispy-forms

from django_formify.tailwind.formify_helper import FormifyHelper
from django_formify.tailwind.layout import Div, Field, Layout, Submit


class ExampleForm(forms.Form):
    
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.formify_helper = FormifyHelper()
        self.formify_helper.layout = Layout(
            Div(
                Div(Field("email"), css_class="col-span-12 md:col-span-6"),
                Div(Field("password"), css_class="col-span-12 md:col-span-6"),
                Div(Field("address"), css_class="col-span-12"),
                Div(Field("address2"), css_class="col-span-12"),
                Div(Field("city"), css_class="col-span-12 md:col-span-6"),
                Div(Field("state"), css_class="col-span-12 md:col-span-4"),
                Div(Field("zip_code"), css_class="col-span-12 md:col-span-2"),
                Div(Field("check_box"), css_class="col-span-12"),
                Div(Submit(text="Sign in"), css_class="col-span-12"),
                css_class="grid grid-cols-12 gap-3",
            ),
        )

The django_formify.tailwind.layout current contains below classes for developers to use:

  • Layout

  • Div

  • HTML

  • Button

  • Submit

  • Reset

  • Field

  • Fieldset

Horizontal Form

Some people might have heard of a horizontal form, where the field labels and fields are arranged side by side

To make it work, please use below code

form.formify_helper = FormifyHelper()
form.formify_helper.field_wrapper_class = "md:flex md:items-center mb-6"
form.formify_helper.label_container_class = "md:w-1/3"
form.formify_helper.field_container_class = "md:w-2/3"