Django
Class-Based Views
ListView, DetailView, and generic editing views
Class-Based Views
CBVs reduce boilerplate for standard list/detail/create flows.
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic import ListView, DetailView, CreateView, UpdateView
from django.urls import reverse_lazy
from .models import Task
class TaskListView(LoginRequiredMixin, ListView):
model = Task
template_name = "tasks/task_list.html"
context_object_name = "tasks"
def get_queryset(self):
return Task.objects.filter(
project__owner=self.request.user
).select_related("project")
class TaskCreateView(LoginRequiredMixin, CreateView):
model = Task
fields = ["project", "title", "priority", "due_date"]
template_name = "tasks/task_form.html"
success_url = reverse_lazy("tasks:task-list")
# urls.py
from django.urls import path
from .views import TaskListView, TaskCreateView
urlpatterns = [
path("", TaskListView.as_view(), name="task-list"),
path("new/", TaskCreateView.as_view(), name="task-create"),
]