Django——分页功能Paginator
Django分页功能----Paginator
Paginator所需参数:
Paginator(object_list,per_page)
Paginator常用属性:
per_page: 每页显示条目数量
count: 数据总个数
num_pages: 总页数
page_range: 总页数的索引范围,页码的范围,从1开始
Paginator对象的方法:
page(number) :返回在提供的下标处的Page对象,下标以1开始。
常见错误
PageNotAnInteger:page()传递的不是整数
EmptyPage:page()传递的值有效,但是没有数据
page对象属性:
Page.object_list: 当前页上所有对象的列表
Page.number: 当前页的序号,从1开始
Page.paginator: 相关的Paginator对象
page对象方法:
has_next():判断是否有下一页
has_previous():判断是否有上一页
has_other_pages():判断是否有上一页或下一页
next_page_number():返回下一页的页码
previous_page_number():返回上一页的页码
start_index(): 返回当前页的第一个对象的索引
end_index(): 返回当前页的最后一个对象的索引
基本方法:
from django.core.paginator import Paginator,PageNotAnInteger,EmptyPage
def page_test(request):
color = ['red','orange','yellow','green','blue','purper']
p = Paginator(color,2) # 实例化分类对象
print(p)
print(p.per_page) # 每页显示的数目
print(p.count) # 总的对象数
print(p.num_pages) # 分的页面数
print(p.page_range) # 页码的范围,从1开始
page1 = p.page(1) # 第一页分页对象
page2 = p.page(2) # 第二页分页对象
print(page1.object_list) # 第一页元素列表
print(page2.object_list) # 第二页元素列表
print(page1.number) # 当前页值 1
print(page2.number) # 当前页值 2
print(page1.paginator) # Paginator指的就是p
print(page1.has_next()) # 当前页是否有后一页
print(page1.has_previous()) # 当前页是否有前一页
print(page1.has_other_pages()) # 当前页是否有前一页或后一页
print(page1.next_page_number()) # 下一页的页码
print(page2.previous_page_number()) # 上一页的页码
print(page1.start_index()) # 当前页的第一个对象的索引
print(page2.end_index()) # 当前页的最后一个对象的索引
return HttpResponse('XXXXX')
blogs博客列表中的应用
view.py视图函数中:
def list(request):
blog_list = BlogModel.objects.all().order_by('id')
p = Paginator(blog_list,3)
page = request.GET.get('page')
blogs = p.page(page)
# 1(第一种方式)
try:
blogs = p.page(page)
except PageNotAnInteger:
blogs = p.page(1)
except EmptyPage:
blogs = p.page(p.num_pages)
# blogs = p.get_page(page) # 2(第二种方式,封装好的方法)
return render(request,'blog/demo_list.html',
context={'page':blogs})
blog_list.html 博客列表模板中:
{% if page.has_previous %}
<a href="{% url 'blog_list' %}?page={{page.previous_page_number}}">上一页</a>
{% endif %}
{# {{ page.number }}/{{ page.paginator.num_pages }}#}
{% for num in page.paginator.page_range %}
{% if num == page.number %}
<a href="{% url 'blog_list' %}?page={{ num }}" style="font-size: 33px">{{ num }}</a>
{% else %}
<a href="{% url 'blog_list' %}?page={{ num }}" >{{ num }}</a>
{% endif %}
{% endfor %}
{% if page.has_next %}
<a href="{% url 'blog_list' %}?page= {{ page.next_page_number }}">下一页</a>
{% endif %}
Django——分页功能Paginator的更多相关文章
- Django 分页功能
Django 分页功能比较强大,这边是结合官网的内容写的可以参考 https://docs.djangoproject.com/en/1.9/topics/pagination/ 分页命令行练习案列 ...
- django分页功能实现
django内置的分页功能需要引入内置模块from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger Pagina ...
- [oldboy-django][2深入django]分页功能
1 django自带分页 1.1 分页模板 <!DOCTYPE html> <html lang="en"> <head> <meta c ...
- django分页功能,templatetags的应用
django 将不会将得到的html代码自动转化 from django.utils.html import format_html html =''' <a href='http://www. ...
- django分页功能
采用django自带的Paginator功能 from django.core.paginator import Paginator food = foodInfo.objects.filter(fo ...
- Django分页组件——Paginator
from django.core.paginator import Paginator #导入Paginator objects = ['john','paul','george','ringo',' ...
- Django自定制分页功能
URL: """django_paginner URL Configuration The `urlpatterns` list routes URLs to views ...
- django 分页组件
一.仿django分页功能自己实现 urls.py 1 2 3 4 5 6 7 8 9 from django.conf.urls import url from django.contrib i ...
- Django 之 Paginator 分页功能
Django Paginator Django 分页官方文档 https://docs.djangoproject.com/en/1.10/topics/pagination/ 此分页方法没有限制显 ...
随机推荐
- java 学习书籍
<Effective java> <深入理解java虚拟机> <Java并发编程实践> <Java Performance> <java解惑> ...
- python面向对象的3个特点
封装 封装是从业务逻辑中抽象对象时,要赋予对象相关数据与操作,将一些数据和操作打包在一起的过程.封装是使用对象的主要魅力之一,它提供了一个简单方法来创建复杂方案,解决了世界是如何工作的这一问题,我们自 ...
- 题解报告:hdu 1261 字串数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1261 Problem Description 一个A和两个B一共可以组成三种字符串:"ABB ...
- 关于cocoapods安装与使用的总结
昨天晚上研究了很入的cocoapods,在各大论坛也看过了很多方法,这里把之前的方法做一个总结. 这里我把自己遇到的一些问题,大概的说了一下.也让广告初学者少走弯路. 先是来自code4app的文章: ...
- Multitenant best Practice clone pdb seed and Clone a Pluggable Database – 12c Edition
1. 1.Tnsnames when connecting to either Container or Pluggable instance The tnsnames.ora should be c ...
- 调用wsdl接口,参数是xml格式
1.最近太累了,好困.闲话少许直奔主题吧.上代码 try{ String wsurl = "http://172.16.16.236:9999/xxx/ws/WSService?wsdl&q ...
- 原型模式及php实现
原型模式: 通过复制已经存在的实例来返回新的实例,而不是新建实例,并且原型(被复制的实例)是可定制的:原型模式多用于创建复杂的或耗时的实例,这种情况下,复制一个已经存在的实例是程序运行更高效无疑是一种 ...
- nvm安装nodejs
1. 安装nvm 下载 nvm-windows解压缩 nvm-windows解压缩 nvm-setup双击运行 nvm-setup.exe选择next选择 [D:\dev][path1] 或 默认路径 ...
- css中border制作各种形状
css利用border制作各种形状的原理如图: 使用border绘制三角形是什么原理?事实上,宽度相等的border是以45度对接的,如下图: 没有了上border如图所示: 再设置border的宽度 ...
- robotframework + python2.7.9 + selenium 2.44.0 + selenium2library1.7 测试环境搭建成功!
真心不容易呀!开源软件搭建挺麻烦的,各种组件未必要使用最新的版本:有些最新版本反而不兼容.需要仔细看官方说明书来进行搭建(官方网站都是英文),所以闹得重新安装了几次. 先上测试用例通过的图: