python第三方库系列之四--django自带分页工具Paginator
2014-11-19 22:31
691 查看
在路上~
每当用到表格展现数据时,都回遇到表格数据量过大而展示不佳的情况,这时候,分页工具Paginator从天而降(也废了工程师们些力气)。
一、分页工具Paginator的引入
二、如何分页
三、返回给前端如何展示(即template视图)
四、各种相关熟悉以及相关方法
1. 各种相关的属性:
总页数:paginator.num_pages
总记录数: paginator.count
页的范围: paginator.page_range, 比如 [1, 2, 3, 4]
页数据(list): page.object_list
当前页码: page.number、
2. 相关的方法:
是否有下页:page.has_next(), True/False
是否有上页:page.has_previous()
下一页的页码:page.next_page_number()
上一页的页码:page.previous_page_number()
当前页第一个对象: page.start_index()
当前页最后一个对象: page.end_index()
每当用到表格展现数据时,都回遇到表格数据量过大而展示不佳的情况,这时候,分页工具Paginator从天而降(也废了工程师们些力气)。
一、分页工具Paginator的引入
from django.core.paginator import PageNotAnInteger, Paginator, InvalidPage, EmptyPage
二、如何分页
from django.core.paginator import PageNotAnInteger, Paginator, InvalidPage, EmptyPage def list(request): books = Book.objects.all() #之前需要从models中导入Book after_range_num = 5 #当前页前显示5页 befor_range_num = 4 #当前页后显示4页 try: #如果请求的页码少于1或者类型错误,则跳转到第1页 page = int(request.GET.get("page",1)) if page < 1: page = 1 except ValueError: page = 1 paginator = Paginator(books,2) # 设置books在每页显示的数量,这里为2 try: #跳转到请求页面,如果该页不存在或者超过则跳转到尾页 books_list = paginator.page(page) except(EmptyPage,InvalidPage,PageNotAnInteger): books_list = paginator.page(paginator.num_pages) if page >= after_range_num: page_range = paginator.page_range[page-after_range_num:page+befor_range_num] else: page_range = paginator.page_range[0:int(page)+befor_range_num] return render-to_response('book_list.html',{'books':books_list,'page_range':page_range})
三、返回给前端如何展示(即template视图)
{% for book in books.object_list %} {{ book.id }} | {{ book.name }} <br /> {% endfor %} <div> {% if books.has_previous %} <a href="?page={{ books.previous_page_number }}">< 上一页</a> {% endif %} <span> {% for p in page_range %} {% ifequal p books.number %} <span class="current">{{p}}</span> {% else %} <a href="?page={{p}}" title="第{{p}}页">{{p}}</a> {% endifequal %} {% endfor %} </span> {% if books.has_next %} <a href="?page={{ books.next_page_number }}">下一页 > </a> {% endif %} <a >[第{{ books.number }}/{{ books.paginator.num_pages }}页]</a> </div>
四、各种相关熟悉以及相关方法
1. 各种相关的属性:
总页数:paginator.num_pages
总记录数: paginator.count
页的范围: paginator.page_range, 比如 [1, 2, 3, 4]
页数据(list): page.object_list
当前页码: page.number、
2. 相关的方法:
是否有下页:page.has_next(), True/False
是否有上页:page.has_previous()
下一页的页码:page.next_page_number()
上一页的页码:page.previous_page_number()
当前页第一个对象: page.start_index()
当前页最后一个对象: page.end_index()
相关文章推荐
- python第三方库系列之三--数据库迁移工具south库
- Python之django自带的分页功能
- python第三方库系列之二十一--python django的权限管理库
- python第三方库系列之十一--django.db的connection库
- python总结27 django paginator实现分页
- python django -6 常用的第三方包或工具
- Python系列视频教程: Django【13讲】第13讲 表单使用
- Python系列视频教程: Django【13讲】第三讲 模板变量的使用
- Django系列教程:八、Django中的管理工具Admin
- python第三方库系列之二十六--virtualenv库
- Python系列视频教程: Django【13讲】第11讲 数据库多对多映射
- Python系列视频教程: Django【13讲】第一讲 Django安装
- Python系列视频教程: Django【13讲】第二讲 模板文件的导入
- (转)Django ====> 实战学习篇十三 分页(Paginator)处理;Django使用内置的admin
- Python系列视频教程: Django【13讲】第八讲 数据库使用2
- Python系列视频教程: Django【13讲】第九讲 数据库使用多对一映射
- Python系列视频教程: Django【13讲】第四讲 运算符-表达式
- python自带的IDLE编辑工具主题设置
- django paginator 分页功能
- 数据分页模块系列 (一) 利用工具Pager-taglib轻松实现分页技术