دوره‌ها / Django / مقدمه Class-Based Views (CBV Intro)

مقدمه Class-Based Views (CBV Intro)

15 دقیقه Article

Class-Based Views: سطح بعدی ویوها 🚀

تا الان با Function-Based Views (FBV) کار کردیم. حالا وقتشه که Class-Based Views (CBV) رو یاد بگیریم! CBV ها کد کمتر و قابلیت استفاده مجدد بیشتری دارن.

FBV vs CBV:
  • FBV: ساده‌تر، برای مبتدی‌ها، کنترل کامل
  • CBV: کد کمتر، قابلیت استفاده مجدد، الگوهای آماده

مزایای CBV

  • ✅ کد کمتر و تمیزتر
  • ✅ الگوهای آماده (مثل ListView, DetailView)
  • ✅ Mixins برای اضافه کردن قابلیت
  • ✅ Inheritance برای استفاده مجدد

مثال ساده

مقایسه یک ویوی ساده:

# blog/views.py
from django.views.generic import ListView
from .models import Post

class PostListView(ListView):
    model = Post
    template_name = 'blog/post_list.html'
    context_object_name = 'posts'

# معادل Function-Based View:
def post_list(request):
    posts = Post.objects.all()
    return render(request, 'blog/post_list.html', {'posts': posts})
نکته: CBV ها به طور خودکار context رو به تمپلیت می‌فرستن. نام پیش‌فرض context معمولاً نام مدل (با حروف کوچک) است، ولی می‌تونید با context_object_name تغییرش بدید.

چه زمانی از CBV استفاده کنیم؟

  • ✅ برای الگوهای رایج (لیست، جزئیات، ساخت، ویرایش، حذف)
  • ✅ وقتی می‌خواید کد مشابه رو در چند جا استفاده کنید
  • ✅ برای استفاده از Mixins (مثل LoginRequiredMixin)
⚠️ نکته: برای کارهای خیلی ساده یا منطق پیچیده، FBV ممکنه بهتر باشه. انتخاب بین FBV و CBV بستگی به نیاز شما داره.

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.

برای ذخیره پیشرفت وارد شوید