صفحه بندی صفحات در جنگو
تو این آموزش قراره نحوه صفحه بندی صفحات در جنگو رو با هم یاد بگیریم.
اضافه کردن صفحه بندی
تا اینجای کار، مطالبی که توی وبلاگمون منتشر کردیم همینجور زیر هم لیست میشن. حالا اگر تعداد مطالب کم باشه که موردی نیست(منظورم در حد 3-4 تا دونه اس) اما اگه مثلاً 50 تا مطلب داشته باشیم که دیگه نمیشه بیایم همه رو زیر هم و تو یه صفحه نمایش بدیم.
بخاطر همین بهتره که بیایم و سیستم pagination رو برای وبلاگمون پیادهسازی کنیم.
به view میریم و کدها رو بصورت زیر تغییر میدیم:
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger def post_list(request, tag_slug=None): object_list = Post.published.all() paginator = Paginator(object_list, 3) # در هر صفحه 3 پست نمایش بده page = request.GET.get('page') # استفاده میکنیم GET طبق داکیومنت جنگو، برای گرفتن شماره صفحه، از try: posts = paginator.page(page) except PageNotAnInteger: # If page is not an integer deliver the first page posts = paginator.page(1) except EmptyPage: # If page is out of range deliver last page of results posts = paginator.page(paginator.num_pages) return render(request, 'blog/post/list.html', {'posts': posts, 'page': page})
حالا یه فایل pagination.html توی فولدر templates از اپلیکیشن blog میسازیم و کدهاش رو اینطور زیر مینویسیم:
<div class="pagination"> <span class="step-links"> {% if page.has_previous %} <a href="?page={{ page.previous_page_number }}">Previous</a> {% endif %} <span class="current"> Page {{ page.number }} of {{ page.paginator.num_pages }}. </span> {% if page.has_next %} <a href="?page={{ page.next_page_number }}">Next</a> {% endif %} </span> </div>
در نهایت توی list.html هر جایی که دلخواهمون هستش و میخوایم سیستم pagination رو قرار بدیم، خط کد زیر رو اضافه میکنیم:
{% include "pagination.html" with page=posts %}
تا تکمیل این بخش، میتونین سایر مطالب در خصوص pagination در جنگو رو از داکیومنت اصلی خود جنگو مطالعه کنید:
https://docs.djangoproject.com/en/3.1/topics/pagination/
در قسمت بعدی مقدمات لازم برای پیاده سازی قسمت نظرات در وبلاگ رو با هم یاد میگیریم.
تو آموزش های بعدی مرکز تخصصی آموزش جنگو، کلی مباحث مختلف و خوب داریم که بتونید هرچی بیشتر با مباحث فریمورک قدرتمند جنگو آشنا بشید و یادشون بگیرید.
سوالات و نظراتتون رو هم حتماً حتماً با ما در میون بذارید.
دیدگاهتان را بنویسید