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 get or post.
  • Category Views (FBV & CBV)
  • Total Views 1206
  • Last Modified 18 November, 2025
  • Tags #cbv #decorators #auth #views
Never miss a story on Django.wiki

Subscribe for fresh tutorials, snippets, and updates.

By subscribing you agree to our Privacy Policy.