19 Nisan 2024 06:04

Anasayfa

undefined...

Paginator

Paginator ile modelimizdeki kayıtları sayfalama yapabiliyoruz. get_page() fonksiyonu artık hatala karşı daha düzenli. Koşullar ile kontrol etmeye gerek kalmıyor. Eğer istenen sayfa rakam değil ise ilk sayfaya, negatif ya da toplam sayfa sayısından büyük ise son sayfaya yönlendiriyor.

 

Örnek

 ilkuygulamam/views.py

def kategori_makaleler(request, katslug):
    makale_listesi         = Makaleler.objects.filter(durum=True, kategori__slug=katslug).order_by('-kayittarihi')
    son_makale_listesi = Makaleler.objects.filter(durum=True).order_by('-kayittarihi')[0:10]
    kategori_listesi       = Kategoriler.objects.filter(durum=True).values('baslik', 'slug').annotate(count=Count('makaleler__baslik')).filter(count__gt=0).order_by('-count', 'baslik')
    kategori_detay       = Kategoriler.objects.get(slug=katslug)page = request.GET.get('sayfa', 1)paginator = Paginator(makale_listesi, 6)

try:
    secili_sayfaki_konular = paginator.page(page)
except PageNotAnInteger:
    secili_sayfaki_konular = paginator.page(1)
except EmptyPage:
    secili_sayfaki_konular = paginator.page(paginator.num_pages)

return render(request, 'katdetay.html', {'son_makale_listesi': son_makale_listesi, 'makale_listesi': secili_sayfaki_konular, 'kategori_listesi': kategori_listesi, 'kategori_detay':kategori_detay})

 

templates/katdetay.html

{% if makale_listesi.has_other_pages %}
<div class="col-md-9 center">
<div class="pagination">
{% if makale_listesi.has_previous %}
<a href="?sayfa={{ makale_listesi.previous_page_number }}">&laquo;</a>
{% else %}
<p class="disabled"><span>x</span></p>
{% endif %}
{% for i in makale_listesi.paginator.page_range %}
{% if makale_listesi.number == i %}
<a href="?sayfa={{ i }}" class="active">{{ i }}</a>
{% else %}
<a href="?sayfa={{ i }}">{{ i }}</a>
{% endif %}
{% endfor %}
{% if makale_listesi.has_next %}
<a href="?sayfa={{ makale_listesi.next_page_number }}">&raquo;</a>
{% else %}
<p class="disabled"><span>x</span></p>
{% endif %}
</div>
</div>
{% endif %}

 

 

 

Django

hakkında diğer konular

Makdos Bilişim Teknolojileri 2015 - 2022