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的更多相关文章

  1. Django 分页功能

    Django 分页功能比较强大,这边是结合官网的内容写的可以参考 https://docs.djangoproject.com/en/1.9/topics/pagination/ 分页命令行练习案列 ...

  2. django分页功能实现

    django内置的分页功能需要引入内置模块from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger Pagina ...

  3. [oldboy-django][2深入django]分页功能

    1 django自带分页 1.1 分页模板 <!DOCTYPE html> <html lang="en"> <head> <meta c ...

  4. django分页功能,templatetags的应用

    django 将不会将得到的html代码自动转化 from django.utils.html import format_html html =''' <a href='http://www. ...

  5. django分页功能

    采用django自带的Paginator功能 from django.core.paginator import Paginator food = foodInfo.objects.filter(fo ...

  6. Django分页组件——Paginator

    from django.core.paginator import Paginator #导入Paginator objects = ['john','paul','george','ringo',' ...

  7. Django自定制分页功能

    URL: """django_paginner URL Configuration The `urlpatterns` list routes URLs to views ...

  8. django 分页组件

      一.仿django分页功能自己实现 urls.py 1 2 3 4 5 6 7 8 9 from django.conf.urls import url from django.contrib i ...

  9. Django 之 Paginator 分页功能

    Django Paginator Django 分页官方文档  https://docs.djangoproject.com/en/1.10/topics/pagination/ 此分页方法没有限制显 ...

随机推荐

  1. 博弈 HDOJ 4371 Alice and Bob

    题目传送门 题意:Alice和 Bob轮流写数字,假设第 i 次的数字是S[i] ,那么第 i+1 次的数字 S[i+1] = S[i] + d[k] 或 S[i] - d[k],条件是 S[i+1] ...

  2. R in action读书笔记(11)-第八章:回归-- 选择“最佳”的回归模型

    8.6 选择“最佳”的回归模型 8.6.1 模型比较 用基础安装中的anova()函数可以比较两个嵌套模型的拟合优度.所谓嵌套模型,即它的一 些项完全包含在另一个模型中 用anova()函数比较 &g ...

  3. JS 中的 JSON

    JSON是JavaScript Object Notation的缩写,它是一种数据交换格式. 在JSON出现之前,大家一直用XML来传递数据.因为XML是一种纯文本格式,所以它适合在网络上交换数据.X ...

  4. jQuery的属性与样式之样式操作.css()

    .css() 方法:获取元素样式属性的计算值或者设置元素的CSS属性 获取: .css( propertyName ) :获取匹配元素集合中的第一个元素的样式属性的计算值 .css( property ...

  5. 关于ubuntu16.04系统无法系统更新的解决

    1.提示系统更新升级,报错 /boot空间不足 2.根据网络,为获得/boot 空间,选择删除多余的内核文件 2.1 查询系统当前内核 ~$dpkg --get-selections |grep li ...

  6. c语言 c++ 实现查看本地ip,外网ip, 本地主机名,查看http网址对应的ip

    /******************************************************************************* 作者 :邓中强 Email :1246 ...

  7. vue工程化引入组件模板

    vue脚手架搭建好项目后,组件间的引用通过components import bannerComponent from './banner' export default { data(){ retu ...

  8. 外键,check,索引等,根据ID来检索详细信息

    sql server OBJECTPROPERTY 函数 分类: Sql server2008-11-26 11:11 1562人阅读 评论(0) 收藏 举报 sql serverinsertdele ...

  9. Java代码的编译和执行

    Java代码编译和执行的整个过程包含了以下三个重要的机制: (1)Java源码编译机制 (2)类加载机制 (3)类执行机制 1.Java代码编译是由Java源码编译器来完成,流程图: Java 源码编 ...

  10. 【PS切图】前端工程师必备,但又无需精通的一项技能。

    前端主要从事一些代码开发工作,PS使用是前端工程师必备,但又无需精通的一项技能. 前端切图四大面板:在“窗口”菜单下开启 1,信息(手动开启)2,字符(手动开启)3,历史记录(手动开启)4,图层(默认 ...