from crispy_forms.layout import Field
from django.forms.util import flatatt
class DynamicForm(forms.Form):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = FormHelper()
if 'fields' in kwargs:
for field_name in kwargs['fields']:
field = Field(field_name, css_class=f'{field_name}-class')
attrs = {'id': field_name}
field.wrap(attrs, flatatt(attrs))
self.helper.add_input(field)
else:
self.helper.add_input(Field('name', css_class='name-class'))
from crispy_forms.layout import Fieldset, HTML
class LegendForm(forms.Form):
name = forms.CharField(max_length=50)
email = forms.EmailField()
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(
'Personal Details',
'name', 'email',
legend_html='<h2>Legend</h2>',
css_class='fieldset-class',
),
Submit('submit', 'Submit'),
)
from crispy_forms.layout import Hidden
class HiddenFieldForm(forms.Form):
hidden_field = forms.CharField(max_length=50, widget=forms.HiddenInput)
name = forms.CharField(max_length=50)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.layout = Layout(
Hidden('hidden_field'),
'name',
Submit('submit', 'Submit'),
)
from crispy_forms.layout import Field
from django.forms.utils import flatatt
class ReadonlyForm(forms.Form):
name = forms.CharField(max_length=50)
readonly_field = forms.CharField(max_length=50, widget=forms.TextInput(attrs={'readonly': True}))
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.layout = Layout(
'name',
Field('readonly_field', readonly=True, css_class='readonly-class'),
Submit('submit', 'Submit'),
)
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Submit, Field
from crispy_forms.bootstrap import AppendedText, PrependedText
class BootstrapAutocompleteForm(forms.Form):
name = forms.CharField(max_length=50)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.layout = Layout(
AppendedText('name', '@example.com'),
Submit('submit', 'Submit'),
)
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Submit, Field
from crispy_forms.bootstrap import InlineField
class BootstrapDatepickerForm(forms.Form):
date = forms.DateField()
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.layout = Layout(
InlineField('date'),
Submit('submit', 'Submit'),
)