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 ارائه میدهد:
- پرسوجوی خودکار از مدل مشخص شده
- پشتیبانی از صفحهبندی (Pagination)
- امکان فیلتر کردن و مرتبسازی نتایج
- ارسال خودکار لیست اشیا به تمپلیت
ویژگی | 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
با استفاده از این کلاسها، میتوانید کدهای تکراری را کاهش دهید و تمرکز خود را روی منطق خاص برنامه بگذارید. برای اطلاعات بیشتر درباره پیادهسازی این ویوها، حتماً به منبع آموزشی مراجعه کنید.