← Back to Chapters

Common Generic Views in Django

? Common Generic Views in Django

✨ Quick Overview

Django provides built-in generic class-based views to handle common CRUD operations efficiently, reducing boilerplate code and improving maintainability.

? Key Concepts

  • Reusable class-based views
  • Automatic database querying
  • Convention over configuration

? What Are Generic Views?

Generic views are pre-built Django views designed to handle common patterns such as listing objects, viewing details, creating, updating, and deleting records.

? Common Generic Views

  • ListView – Display multiple objects
  • DetailView – Display one object
  • CreateView – Create new object
  • UpdateView – Update existing object
  • DeleteView – Delete an object

? ListView

Displays a list of objects from a model.

? View Code Example
# Displays a list of Book objects
from django.views.generic import ListView
from .models import Book

class BookListView(ListView):
    model = Book
    template_name = 'book_list.html'
    context_object_name = 'books'

? DetailView

Shows detailed information for a single object.

? View Code Example
# Shows details of a single Book
from django.views.generic import DetailView
from .models import Book

class BookDetailView(DetailView):
    model = Book
    template_name = 'book_detail.html'
    context_object_name = 'book'

➕ CreateView

Handles object creation with a form.

? View Code Example
# Creates a new Book entry
from django.views.generic import CreateView
from django.urls import reverse_lazy
from .models import Book

class BookCreateView(CreateView):
    model = Book
    fields = ['title','author','price']
    template_name = 'book_form.html'
    success_url = reverse_lazy('book_list')

✏️ UpdateView

Updates an existing object.

? View Code Example
# Updates an existing Book
from django.views.generic import UpdateView
from django.urls import reverse_lazy
from .models import Book

class BookUpdateView(UpdateView):
    model = Book
    fields = ['title','author','price']
    template_name = 'book_form.html'
    success_url = reverse_lazy('book_list')

?️ DeleteView

Deletes an object after confirmation.

? View Code Example
# Deletes a Book object
from django.views.generic import DeleteView
from django.urls import reverse_lazy
from .models import Book

class BookDeleteView(DeleteView):
    model = Book
    template_name = 'book_confirm_delete.html'
    success_url = reverse_lazy('book_list')

? Interactive Simulator: Book Manager

Click the buttons below to interact with a JavaScript simulation of how these Django views behave in a real browser.

Current View: ListView
 

*Note: This is a frontend simulation. In Django, these operations happen on the server.

? Explanation

  • ListView handles listing records
  • DetailView shows one record
  • CreateView adds new data
  • UpdateView edits existing data
  • DeleteView removes data

✅ Tips & Best Practices

  • Always use reverse_lazy in class-based views
  • Customize context_object_name for clarity
  • Protect views with permissions when needed

? Try It Yourself

  • Build CRUD views for a new model
  • Add login protection to DeleteView
  • Customize templates for better UI