0

[ update pagination sitemap page ] Django Blog Python Learning v.2, bismillahirrahmanirrahim, pada kesempatan kali ini kita update lagi, setelah sebelumnya update about author, kali ini kita akan update lagi berupa pagination sitemap page.

Mengapa hal tersebut dilakukan? yap, karena seiring dengan adanya kemungkinan jumlah posts semakin besar, oleh karena memungkinkan pula scroll pada bowser akan semakin kecil karena banyak. oleh karena itu ada baiknya kita tambah sedikit menjadi pagination.

Secara konsep sebenarnya sama seperti membuat pagination pada “display al article under tag”, ataupun “results query”. Lalu manakah yang kita ubah?

1. Mengganti satu function my_sitemap(request): pada myproject/views.py menjadi seperti ini:

def my_sitemap(request):
    t = loader.get_template('sitemap.html')
    all_entry = Entry.objects.all()
    paginator = Paginator(all_entry, 10) #show 10 articles per page
    page = request.GET.get('page')
    try:
        all_entry = paginator.page(page)
    except PageNotAnInteger:
        all_entry = paginator.page(1)
    except EmptyPage:
        all_entry = paginator.page(paginator.num_pages)
    index = all_entry.number - 1
    limit = 3 #limit for show range left and right of number pages
    max_index = len(paginator.page_range)
    start_index = index - limit if index >= limit else 0
    end_index = index + limit if index <= max_index - limit else max_index
    page_range = paginator.page_range[start_index:end_index]
    c = Context({'all_entry':all_entry, 'page_range': page_range, })
    return HttpResponse(t.render(c))

2. Menambahkan pagination pada template sitemap.html yang letaknya tepat sebelum {% endblock %}untuk {% block blog_entries %}, atau dibawah end tag dari <div class="post sitemap">.

<ul class="pagination">
  <li {% if not all_entry.has_previous %}class="disabled"{% endif %}>
     <a {% if all_entry.has_previous %}href="?page={{ all_entry.previous_page_number }}" aria-label="Previous" {% endif %}><span aria-hidden="true">«</span></a>
   </li>
   <li><a href="?page=1">First</a></li>
  {% for linkpage in page_range %}
      {% ifequal linkpage all_entry.number %}
         <li class="active">
           <a href="#">{{ all_entry.number }}<span class="sr-only">(current)</span></a>
         </li>
      {% else %}
         <li><a href="?page={{ linkpage }}">{{ linkpage }}</a></li>
      {% endifequal %}
  {% endfor %}
  <li><a href="?page={{ all_entry.paginator.num_pages }}">Last</a></li>
  <li {% if not all_entry.has_next %}class="disabled"{% endif %}>
     <a {% if all_entry.has_next %}href="?page={{ all_entry.next_page_number }}" aria-label="Next" {% endif %}><span aria-hidden="true">»</span></a>
   </li>
</ul>

Keduanya jika masih bingung, di github juga kita update:

Update myproject/views.pyhttps://github.com/agusmakmun/Django-Blog-Python-Learning-v.2/commit/7026abbc22f8a14f3e130aec618c0ce3370f0a63

Update sitemap.htmlhttps://github.com/agusmakmun/Django-Blog-Python-Learning-v.2/commit/dd272f1f3892418e2886b81dc5f67c9a3d0a5b71

Jika terjadi problem, bisa langsung ditanyakan pada komentar dibawah. Semoga bermanfaat.

python django

Your Answer

blog comments powered by Disqus