Class-Based Views¶
P8s provides Django-style generic views for common CRUD patterns.
Quick Start¶
from p8s.views import ListView, DetailView, CreateView
class ProductListView(ListView):
model = Product
paginate_by = 20
class ProductDetailView(DetailView):
model = Product
class ProductCreateView(CreateView):
model = Product
fields = ["name", "price", "category_id"]
Available Views¶
| View | Purpose |
|---|---|
ListView |
Display list with pagination |
DetailView |
Display single object |
CreateView |
Create new object |
UpdateView |
Update existing object |
DeleteView |
Delete object |
ListView¶
class ProductListView(ListView):
model = Product
paginate_by = 25 # Items per page
ordering = "-created_at" # Default ordering
Returns:
DetailView¶
CreateView¶
UpdateView¶
class ProductUpdateView(UpdateView):
model = Product
fields = ["name", "price"] # Fields that can be updated
Supports both PUT and PATCH methods.
DeleteView¶
class ProductDeleteView(DeleteView):
model = Product
soft_delete = True # Use soft delete if available
Converting to Routes¶
Use as_route to integrate with FastAPI: