Django Forms

Web DevelopmentDjangoFree Lesson

Advertisement

Introduction

Django forms handle form rendering, validation, and processing.

Form Definition

from django import forms

class BookForm(forms.Form):
    title = forms.CharField(max_length=200)
    author = forms.CharField()
    price = forms.DecimalField(max_digits=10, decimal_places=2)
    published_date = forms.DateField(widget=forms.DateInput(attrs={"type": "date"}))

# Model Form (auto-generates from model)
from .models import Book

class BookModelForm(forms.ModelForm):
    class Meta:
        model = Book
        fields = ["title", "author", "price", "published_date"]

Form Processing

def book_create(request):
    if request.method == "POST":
        form = BookModelForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect("book_list")
    else:
        form = BookModelForm()
    return render(request, "books/form.html", {"form": form})

Form Templates

<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Submit</button>
</form>

Practice Problems

  1. Create ModelForm from existing model
  2. Add custom field validation
  3. Style forms with widgets
  4. Handle multiple forms on one page
  5. Implement formset for multiple objects

Advertisement

Need Expert Python Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement