21 Ekim 2014 Salı

Django Purge Pagination

Django'da sayfalama için kullanabileceğimiz uygulama olan purge-pagination'dan bahsedeceğiz. Django'nun sayfalama yapısı bizim tam olarak işimizi görmediği için bu sayfalama uygulamasını kullanabiliriz. Genelde sayfa sayısının çok fazla olduğu yerlerde tüm sayfalar gösterilmektense baştan bir kaç sayfa bulunulan sayfa ve sondan bir kaç sayfa gösterilerek güzel bir görüntü oluşması sağlanır. Purge Pagination bu işi halletmemizi sağlıyor. Kurmak için
pip install django-pure-pagination
Uygulamayı kurduktan sonra projemize eklememiz gerekiyor. Bunun için;
INSTALLED_APPS = (
    ...
    'pure_pagination',
)
Uygulamayı yükledikten sonra settings.py içerisinde ayarlamalarını yapabiliriz.
PAGINATION_SETTINGS = {
    'PAGE_RANGE_DISPLAYED': 10,
    'MARGIN_PAGES_DISPLAYED': 2,
}
Buradaki PAGE_RANGE_DISPLAYED ayarı ortada kaç tane sayfa göstericeğini belirtiyor. MARGIN_PAGES_DISPLAYED ise başta ve sonra kaç sayfa olacağını gösteriyor. Yani sayfalama başta 2 sayfa...ortada 10 sayfa...sonda 2 sayfa şeklinde olacak.
Uygulamayı eklediğimize göre kullanabiliriz. Django'nun kendi Pagination yapısı ile kullanımı hemen hemen aynı. Django'da Pagination metodlarınışu şekilde yürklüyoruz.
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
Purge Pagination'da ise sadece uygulama değişiyor. Metodlar ve kullanımları aynı.
from pure_pagination import Paginator, EmptyPage, PageNotAnInteger
View içerisinde şu şekilde kullanabiliriz.
tum_yazilar = Yazilar.objects.filter(onay=1)
yazi_sayfalari = Paginator(tum_yazilar, 10, request=request) 
yazilar = yazi_sayfalari.page(page)
Son olarak ise template içerisinde sayfaları şu şekilde gösterebiliriz.
        {% if yazilar.has_previous or yazilar.has_next %}
            {% load i18n %}
            
    {% if yazilar.has_previous %}
  • {% else %}
  • ‹‹
  • {% endif %} {% for page in yazilar.pages %} {% if page %} {% ifequal page yazilar.number %}
  • {{ page }}
  • {% else %}
  • {{ page }}
  • {% endifequal %} {% else %}
  • ...
  • {% endif %} {% endfor %} {% if yazilar.has_next %}
  • {% else %}
  • ››
  • {% endif %}
{% endif %}
Artık sayfalamamız şuna benzer bir şekilde görünecektir. Sizin temanıza göre stili değişir. Fakat sayfa sayısı bu şekilde olacaktır. Burada resmi uygulamanın github hesabından aldık.
Kaynakça

0 yorum :

Yorum Gönder