Django provides two primary ways to create forms: using forms.Form for custom forms and forms.ModelForm for forms tied to Django models. These forms simplify validation, rendering, and data handling in Django applications.
forms.Form is ideal when you need complete control over fields and validation logic. forms.ModelForm is preferred when working directly with database models, reducing boilerplate code.
# Import Django forms module
from django import forms
# Define a custom contact form
class ContactForm(forms.Form):
name = forms.CharField(max_length=100)
email = forms.EmailField()
message = forms.CharField(widget=forms.Textarea)
# Use this form in a view with validation
# Import Django forms and model
from django import forms
from .models import Product
# Create a ModelForm linked to Product model
class ProductForm(forms.ModelForm):
class Meta:
model = Product
fields = ['name','price','stock']
# form.save() persists data to database
form.is_valid()ModelForm saves data directly to databaseClick the button below to simulate Django form validation:
// Simulated client-side validation example
function validateForm() {
// Logic handles input validation
alert("Django form validated successfully!");
}
ModelForm whenever working with modelsis_valid() before accessing dataclean_* methods for validationforms.FormModelForm