TemplateView و ListView

معرفی TemplateView و ListView در جنگو

در فریم‌ورک جنگو، TemplateView و ListView از کلاس‌های نمایش مبتنی بر کلاس (CBV) هستند که به توسعه‌دهندگان کمک می‌کنند با نوشتن کد کمتر، عملکردهای رایج را پیاده‌سازی کنند. این کلاس‌ها بخشی از ماژول django.views.generic هستند و استفاده از آن‌ها سرعت توسعه را به‌طور چشمگیری افزایش می‌دهد.


TemplateView: ساده‌ترین نمایش مبتنی بر کلاس

TemplateView برای مواقعی استفاده می‌شود که نیاز به نمایش یک تمپلیت ساده دارید و نیازی به پردازش داده‌های پیچیده نیست. ویژگی‌های کلیدی آن عبارتند از:

  • نمایش یک تمپلیت بدون نیاز به منطق پیچیده
  • پشتیبانی از متدهای GET و POST
  • امکان ارسال context سفارشی به تمپلیت
مثال استفاده:
from django.views.generic import TemplateView

class HomePageView(TemplateView):
    template_name = "home.html"

ListView: نمایش لیستی از اشیا

ListView برای نمایش لیستی از اشیا (معمولاً از مدل‌های دیتابیس) استفاده می‌شود. این کلاس قابلیت‌های پیشرفته‌تری نسبت به TemplateView ارائه می‌دهد:

  1. پرس‌وجوی خودکار از مدل مشخص شده
  2. پشتیبانی از صفحه‌بندی (Pagination)
  3. امکان فیلتر کردن و مرتب‌سازی نتایج
  4. ارسال خودکار لیست اشیا به تمپلیت
ویژگی TemplateView ListView
پرس‌وجوی دیتابیس ندارد دارد
صفحه‌بندی ندارد دارد
پیچیدگی ساده متوسط
برای یادگیری عمیق‌تر درباره ویوها در جنگو، می‌توانید اینجا را نگاه کنید. این منبع به شما کمک می‌کند با جزئیات بیشتری با انواع ویوها آشنا شوید.

تنظیمات پیشرفته ListView

برای سفارشی‌سازی رفتار ListView، می‌توانید از متدها و ویژگی‌های زیر استفاده کنید:

  • model: مشخص کردن مدل مورد نظر برای پرس‌وجو
  • queryset: تعیین کوئری‌ست سفارشی
  • context_object_name: تغییر نام متغیر ارسالی به تمپلیت
  • paginate_by: تعیین تعداد آیتم‌ها در هر صفحه

مثال زیر نشان می‌دهد چگونه می‌توان یک ListView سفارشی ایجاد کرد:

from django.views.generic import ListView
from .models import Article

class ArticleListView(ListView):
    model = Article
    template_name = "article_list.html"
    context_object_name = "articles"
    paginate_by = 10

با استفاده از این کلاس‌ها، می‌توانید کدهای تکراری را کاهش دهید و تمرکز خود را روی منطق خاص برنامه بگذارید. برای اطلاعات بیشتر درباره پیاده‌سازی این ویوها، حتماً به منبع آموزشی مراجعه کنید.