Django
Django Forms
Form and ModelForm validation
Django Forms
Forms validate input and render HTML. Use ModelForm when bound to models.
# tasks/forms.py
from django import forms
from .models import Task
class TaskForm(forms.ModelForm):
class Meta:
model = Task
fields = ["project", "title", "priority", "due_date"]
widgets = {
"due_date": forms.DateInput(attrs={"type": "date"}),
}
def clean_title(self):
title = self.cleaned_data["title"].strip()
if len(title) < 3:
raise forms.ValidationError("Title must be at least 3 characters.")
return title
<form method="post">{% csrf_token %}
{{ form.as_p }}
<button type="submit">Save</button>
</form>