آموزش صفحه بندی اطلاعات در جنگو
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">« 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 »</a>
{% endif %}
</span>
</div>
amir
May 2020پاسخ به نظر
اگر بخوایم لینک تمام صفحات رو نشون بدیم باید چیکار کنیم؟
پاسخ به نظر
امیرحسین بیگدلو
May 2020هر چند که پیشنهاد نمیشه همچین کاری انجام بدین اما میتونید داخل
page_obj.paginator.page_range
حلقه for بزنید.
page_range تعداد تمام صفحات رو به شکل range میاره