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>