دوره‌ها / Django / صفحه‌بندی در ویو و تمپلیت (Pagination in Views & Templates)

صفحه‌بندی در ویو و تمپلیت (Pagination in Views & Templates)

15 دقیقه Article

صفحه‌بندی در عمل: ویو و تمپلیت 🎯

حالا بیایید ببینیم چطور صفحه‌بندی رو در ویو و تمپلیت پیاده‌سازی کنیم.

در Function-Based View

# blog/views.py
from django.core.paginator import Paginator
from django.shortcuts import render
from .models import Post

def post_list(request):
    posts = Post.objects.all()
    paginator = Paginator(posts, 10)  # 10 پست در هر صفحه
    
    page_number = request.GET.get('page', 1)
    page = paginator.get_page(page_number)
    
    return render(request, 'blog/list.html', {'page': page})

در Class-Based View

با CBV خیلی ساده‌تره! فقط paginate_by رو اضافه کنید:

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

class PostListView(ListView):
    model = Post
    template_name = 'blog/list.html'
    paginate_by = 10  # همین! جنگو خودش صفحه‌بندی می‌کنه
    
    # context_object_name به طور خودکار 'page' میشه
    # و در تمپلیت می‌تونید از page استفاده کنید

در تمپلیت


{% for post in page.object_list %}
    

{{ post.title }}

{{ post.content }}

{% endfor %}

نمایش شماره صفحات


نکته: در CBV، اگر paginate_by رو تنظیم کنید، جنگو به طور خودکار یک page object به context اضافه می‌کنه که می‌تونید در تمپلیت استفاده کنید.

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

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

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