Ali Ranjbar
Ali Ranjbar
خواندن ۱ دقیقه·۴ سال پیش

حل یکی از مشکلات در paginate کردن صفحات در جنگو

یکی از مشکلاتی که در paginate کردن صفحات جنگو به صورت عددی هست اینه که مثلا شما یه لیست رو در تمپلیت برمیگردونی و در انتهای صفحه چند عدد قرار میدی که نشون میده باید کاربر برای دیدن ادامه مطالب به صفحات بعد مراجعه کنه و بعد کاربر روی صفحه دو میزنه و بعد سه و الی آخر...

حالا اگه تعداد پستهای ما زیاد بشه چی کار باید کرد؟ چون اینجوری باعث میشه تعداد خیلی زیادی از عدد صفحات به نمایش در بیاد( مثلا از 1 تا 500)

الان اگه تعداد پستای ما هزارتا بشه تقریبا از عدد یک تا 350 به نمایش در میاد برای صفحات
الان اگه تعداد پستای ما هزارتا بشه تقریبا از عدد یک تا 350 به نمایش در میاد برای صفحات

خب حالا راه حل چیه؟

توی تمپلیت از کد زیر باید استفاده کرد...



{% if is_paginated %}

<ul class="pagination">

{% if page_obj.has_previous %}

<li><a href="{% url 'payments:charge_list' page_obj.previous_page_number %}">&laquo;</a></li>

{% else %}

<li class="disabled"><span>&laquo;</span></li>

{% endif %}

{% for i in paginator.page_range %}

{% if page_obj.number == i %}

<li class="active"><span>{{ i }} <span class="sr-only">(current)</span></span></li>

{% elif i > page_obj.number|add:'-3' and i < page_obj.number|add:'3' %}

<li><a href="{% url 'payments:charge_list' i %}">{{ i }}</a></li>

{% endif %}

{% endfor %}

{% if page_obj.has_next %}

<li><a href="{% url 'payments:charge_list' page_obj.next_page_number %}">&raquo;</a></li>

{% else %}

<li class="disabled"><span>&raquo;</span></li>

{% endif %}

</ul>

{% endif %}


نکته اصلی توی این قسمته:

{% elif i > page_obj.number|add:'-3' and i < page_obj.number|add:'3' %}

این کار باعث میشه فقط دو عدد صحه قبل و دو عدد صفحه بعد نمایش داده بشه یعنی به این شکل:

راه حل های دیگری هم هست که خوشحال میشم اونارو در کامنت با من در میون بزارید.

جنگوdjangoوبصفحه بندیpaginate
شاید از این پست‌ها خوشتان بیاید