1. 程式人生 > >django分頁器paginator使用簡單說明

django分頁器paginator使用簡單說明

django 分頁

Django之分頁功能

Django提供了一個新的類來幫助你管理分頁數據,這個類存放在django/core/paginator.py.它可以接收列表、元組或其它可叠代的對象。


基本語法

class Paginator(object):
 
    def __init__(self, object_list, per_page, orphans=0,
                 allow_empty_first_page=True):
        self.object_list = object_list
        self.per_page = int(per_page)
        self.orphans = int(orphans)
        self.allow_empty_first_page = allow_empty_first_page
 
……

基本語法實例

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
 
import os
 
from django.core.paginator import Paginator
objects = [‘john‘,‘paul‘,‘george‘,‘ringo‘,‘lucy‘,‘meiry‘,‘checy‘,‘wind‘,‘flow‘,‘rain‘]<br>
p = Paginator(objects,3)  # 3條數據為一頁,實例化分頁對象
print p.count  # 10 對象總共10個元素
print p.num_pages  # 4 對象可分4頁
print p.page_range  # xrange(1, 5) 對象頁的可叠代範圍
 
page1 = p.page(1)  # 取對象的第一分頁對象
print page1.object_list  # 第一分頁對象的元素列表[‘john‘, ‘paul‘, ‘george‘]
print page1.number  # 第一分頁對象的當前頁值 1
 
page2 = p.page(2)  # 取對象的第二分頁對象
print page2.object_list  # 第二分頁對象的元素列表 [‘ringo‘, ‘lucy‘, ‘meiry‘]
print page2.number  # 第二分頁對象的當前頁碼值 2
 
print page1.has_previous()  # 第一分頁對象是否有前一頁 False
print page1.has_other_pages()  # 第一分頁對象是否有其它頁 True
 
print page2.has_previous()  # 第二分頁對象是否有前一頁 True
print page2.has_next()  # 第二分頁對象是否有下一頁 True
print page2.next_page_number()  # 第二分頁對象下一頁碼的值 3
print page2.previous_page_number()  # 第二分頁對象的上一頁碼值 1
print page2.start_index()  # 第二分頁對象的元素開始索引 4
print page2.end_index()  # 第2分頁對象的元素結束索引 6



在視圖中的應用

from django.core.paginator import Paginator, InvalidPage,EmptyPage,PageNotAnInteger
from django.shortcuts import render
 
def listing(request):
    try:
        article_list = Article.objects.all()                #獲取文章數據
        paginator = Paginator(article_list,3)               #創建分頁對象,每頁顯示5個
        try:
            page = int(request.GET.get(‘page‘,1))           #獲取分頁當前頁,如果客戶沒有傳任何數據,則默認為1
            article_list = paginator.page(page)
        except (EmptyPage,InvalidPage,PageNotAnInteger):
            article_list = paginator.page(1)

    except Exception as e:
        logger.error(e)
    return render(request, "index.html", locals())           #locals是一個函數,包含當前作用域所有變量對象

前端配置:

在template的html模板中的應用

{% %}

  
    {{ .}}
    {{ .}}
    {% ..%}{{ .}}{% %}{{ .}}瀏覽({{ .}})評論({{ ...}})
  

{% %}
    
    {% .%}
    {{ .}}上一頁
    {% %}
    上一頁
    {% %}
     {{ .}}/{{ ..}}
    {% .%}
      {{ .}}下一頁 
    {% %}
      下一頁 
    {% %}


django分頁器paginator使用簡單說明