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模板中的应用
{% %} {{ .}} {{ .}} {% ..%}{{ .}}{% %}{{ .}}浏览({{ .}})评论({{ ...}}) {% %}
{% .%} {{ .}}上一页 {% %} 上一页 {% %} {{ .}}/{{ ..}} {% .%} {{ .}}下一页 {% %} 下一页 {% %}
转载于:https://blog.51cto.com/12676522/1980664