Method Decorators on Class-Based Views
Protect or modify CBV methods with decorators.
# models.py
from django.db import models
class Secret(models.Model):
title = models.CharField(max_length=120)
# admin.py
from django.contrib import admin
from .models import Secret
@admin.register(Secret)
class SecretAdmin(admin.ModelAdmin):
list_display = ("title",)
# views.py
from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator
from django.views.generic import DetailView
from .models import Secret
@method_decorator(login_required, name="dispatch")
class SecretDetail(DetailView):
model = Secret
template_name = "secrets/detail.html"
# urls.py
path("secrets/<int:pk>/", SecretDetail.as_view(), name="secret-detail")
Explanation:
-
Use
@method_decorator(..., name='dispatch')to guard all HTTP methods. -
You can also decorate individual methods like
getorpost.
- Category Views (FBV & CBV)
- Total Views 1205
- Last Modified 18 November, 2025
- Tags #cbv #decorators #auth #views
Previous snippet
Add Extra Context with get_context_data
Next snippet