[转]django-pagination简单使用

我只能說, django-pagination 真是一個好物。

雖然說 django 本身提供的 pagination 就已經很不錯用了, 可是在使用上還是稍嫌多餘了些, 得在 view 重複的打上那一段 code, 而 template 那邊也是, 除非就是自己寫 template tag 來處理。

django 原本提供的 pagination, 在寫 view 的時候大概像是這樣: (直接拿 django 的 example)

 

from django.core.paginator import Paginator, InvalidPage, EmptyPage

def listing(request):
    contact_list = Contacts.objects.all()
    paginator = Paginator(contact_list, 25)

    try:
        page = int(request.GET.get('page', '1'))
    except ValueError:
        page = 1

    try:
        contacts = paginator.page(page)
    except (EmptyPage, InvalidPage):
        contacts = paginator.page(paginator.num_pages)

    return render_to_response('list.html', {"contacts": contacts})

 

而如果使用 django-pagination 的話, 看到 view 就真的是會笑出來了 XD

 
def listing(request):
    contacts = Contacts.objects.all()
    return render_to_response('list.html', {"contacts": contacts})

 

就這樣! 而且還不用 import Paginator。

基本上 django-pagination 的處理動作都在 template 那邊, 看起來大概像是這樣

 
{% load pagination_tags %} # 載入 template tag

{% autopaginate contacts 10 %} # 加上這一行處理分頁
{% for contact in contacts %}
 {{ contact.name }}
{% endfor %}

{% paginate %} # 秀出分頁

 

That’s all! :D

比照一下 django 內建的 pagination, 就可以明顯比較出 template 之間差別了, django-pagination 真是超令人開心的一個套件阿, 而且作者還提供了一個 screencast

真的是太貼心了阿~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值