django 分页
来源:互联网 发布:淘宝买的衣服没有吊牌 编辑:程序博客网 时间:2024/05/20 00:11
数据多了在一页全部显示不仅不美观,也给服务器带来很大压力。django提供了分页的工具,那就是paginator类,下面来看看该怎么用:
首先要导入该类:
from django.core.paginator import Paginator
认识Paginator类
class Paginator(object_list, per_page,orphans=0,allow_empty_first_page = True)
必需参数:
其中object_list可以是列表,元组,Django 查询集,或者其他有count()和__len__()方法的可切分对象
per_page指每页显示的最大数量
可选参数
orphans最后一页允许显示的最小数量,默认值为0,主要作用是防止最后一页显示的数量太少,
若数量小于orphans规定的值,则在前一页显示。
allow_empty_first_page是否允许第一页是空的
方法:
Paginator.page(number) 返回指定页的对象
属性:
Paginator.count 所有对象的数量
Paginator.num_pages 分页后的总页数
Paginator.page_range 从1开始的页码的区间如[1,2,3,4]
通过Paginator.page(number)可以获取Page对象
Page对象一般不手动生成
方法
Page.has_next() 返回True如果还有下一页
Page.has_previous() 返回True如果还有上一页
Page.has_other_pages()返回True如果还有上一页或下一页
Page.next_page_number()返回下一页的页码,有风险,即使不存在也会返回
Page.previous_page_number()返回前一页的页码,有风险,即使不存在也会返回
Page.start_index()返回当前页的第一个对象
Page.end_index()返回当前页的最后一个对象
属性
Page.object_list 一页中包含的项目的列表
Page.number 一页中包含的项目数量
Page.paginator 对应的Paginator对象
基础知识学完了以后来看个例子:
在视图中使用Paginator
from django.core.paginator import Paginator, EmptyPage, PageNotAnIntegerdef listing(request): contact_list = Contacts.objects.all() p = Paginator(contact_list , 25) page = request.GET.get('page') try: contacts = paginator.page(page) except PageNotAnInteger: # 如果页码不是整数,返回第一页. contacts = paginator.page(1) except EmptyPage: # 如果页码不在范围内,返回最后一页 contacts = paginator.page(paginator.num_pages) return render_to_response('list.html', {"contacts": contacts}) 再看看与此对应的模版该怎么写:{% for contact in contacts %} {# Each "contact" is a Contact model object. #} {{ contact.full_name|upper }}<br /> ...{% endfor %}<div class="pagination"> <span class="step-links"> {% if contacts.has_previous %} <a href="?page={{ contacts.previous_page_number }}">previous</a> {% endif %} <span class="current"> Page {{ contacts.number }} of {{ contacts.paginator.num_pages }}. </span> {% if contacts.has_next %} <a href="?page={{ contacts.next_page_number }}">next</a> {% endif %} </span></div>
- django 分页
- django分页
- django 分页
- django 分页
- Django分页
- django分页
- Django 分页
- Django 分页
- django分页
- django 分页
- Django 分页
- Django分页
- Django 分页
- Django 分页 django-pagination
- django分页(原生分页)
- Django 分页插件:django-pagination
- Django 分页插件:django-pagination .
- Django 分页插件:django-pagination .
- android style
- UART driver
- centOS快捷键
- CCMenuItemSprite 如何更改sprite 图片
- Python SocketServer模块
- django 分页
- 如何给磁盘文件排序
- Linux下C程序进程地址空间布局
- Java之美[从菜鸟到高手演变]系列之博文阅读导航
- SQL时间戳使用之任务循环
- zoj1094-Matrix Chain Multiplication
- 对共享网络与交换网络进行监听
- 乱胡扯计算器
- SYN Flood攻击及防止攻击方法SYN COOKIE防火墙