آموزش صفحه بندی اطلاعات در جنگو

May 2020

در این ویدیو با نحوه صفحه بندی اطلاعات در جنگو آشنا میشوید. برای صفحه بندی اطلاعات از کلاس Paginatior استفاده میشود.

برای صفحه بندی اطلاعات در class based viewها به شکل زیر کار میکنید:

from django.views.generic import ListView

from myapp.models import Contact

class ContactList(ListView):
    paginate_by = 2
    model = Contact

و برای صفحه بندی در function base viewها به شکل زیر:

from django.core.paginator import Paginator
from django.shortcuts import render

from myapp.models import Contact

def listing(request):
    contact_list = Contact.objects.all()
    paginator = Paginator(contact_list, 25) # Show 25 contacts per page.

    page_number = request.GET.get('page')
    page_obj = paginator.get_page(page_number)
    return render(request, 'list.html', {'page_obj': page_obj})

بعد از تکه کردن آبجکت ها در view میتوانید اطلاعات را در template نشان دهید:

{% for contact in page_obj %}
    {# Each "contact" is a Contact model object. #}
    {{ contact.full_name|upper }}<br>
    ...
{% endfor %}

<div class="pagination">
    <span class="step-links">
        {% if page_obj.has_previous %}
            <a href="?page=1">&laquo; first</a>
            <a href="?page={{ page_obj.previous_page_number }}">previous</a>
        {% endif %}

        <span class="current">
            Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
        </span>

        {% if page_obj.has_next %}
            <a href="?page={{ page_obj.next_page_number }}">next</a>
            <a href="?page={{ page_obj.paginator.num_pages }}">last &raquo;</a>
        {% endif %}
    </span>
</div>

 

ارسال نظر

اگر قراره سوالی بپرسید که داخلش کد هست، بهتره از کدتون عکس بگیرید و به ایمیلی که پایین نوشتم بفرستید

amir

May 2020

اگر بخوایم لینک تمام صفحات رو نشون بدیم باید چیکار کنیم؟

پاسخ به نظر


امیرحسین بیگدلو

May 2020

هر چند که پیشنهاد نمیشه همچین کاری انجام بدین اما میتونید داخل
page_obj.paginator.page_range
حلقه for بزنید.
page_range تعداد تمام صفحات رو به شکل range میاره