مقدمه Class-Based Views (CBV Intro)
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 بستگی به نیاز شما داره.
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.