django的分页器
Django中分页器的使用
django分页器模块
#分页器
from django.core.paginator import Paginator,EmptyPage,PageNotAnInteger
分页器常用方法:
def index(request):
book_list=Book.objects.all()
#实例化分页器对象,第二个对象是每页最大条数
paginator=Paginator(book_list,21)
#三个静态方法
print('count',paginator.count) #数据总数
print('num_pages',paginator.num_pages) #总页数
print('page_range',paginator.page_range) #页码范围,相当于(1,总页数+1)
#取某一页的page对象
page1=paginator.page(1) #第一页的page对象
#遍历第一页的数据对象的两种方式
for i in page1:
print(i)
print(page1.object_list) page2=paginator.page(2)
print(page2.has_next()) #是否有下一页
print(page2.next_page_number()) #下一页的页码
print(page2.has_previous()) #是否有上一页
print(page2.previous_page_number()) #上一页页码 return render(request,'index.html',locals())
正式建一个分页器:
views:
from django.shortcuts import render,redirect
from .models import *
#分页器
from django.core.paginator import Paginator,EmptyPage,PageNotAnInteger
# Create your views here. def add(request):
#数据库批量添加
book_list=[]
for i in range(500):
book_obj=Book(title='book%s'%i,price=i)
book_list.append(book_obj)
Book.objects.bulk_create(book_list)
return redirect('/index/') def index(request): current_page_num=int(request.GET.get('page',1))
book_list = Book.objects.all()
paginator=Paginator(book_list,11)
page=paginator.page(current_page_num)
html(利用bootstrap框架):
<body>
<ul>
{% for book in page %}
<li>{{ book.pk }}--{{ book.title }}--{{ book.price }}</li>
{% endfor %}
</ul>
<nav aria-label="Page navigation">
<ul class="pagination">
<li>
<a href="?page={{ current_page_num|add:-1 }}" aria-label="Previous">上一页</a>
</li>
{% for num in paginator.page_range %}
{% if current_page_num == num %}
<li class="active">
<a href="?page={{ num }}">{{ num }}</a>
</li>
{% else %}
<li>
<a href="?page={{ num }}">{{ num }}</a>
</li>
{% endif %}
{% endfor %}
{# 下一页#}
{% if page.has_next %}
<li>
<a href="?page={{ current_page_num|add:1 }}" aria-label="Next">下一页</a>
</li>
{% else %}
<li class="disabled">
<a href="#" aria-label="Next">下一页</a>
</li>
{% endif %} </ul>
</nav> </body>
页数比较多时,不一一显示:
可以加一段逻辑
def index(request):
current_page_num=int(request.GET.get('page',1))
book_list = Book.objects.all()
paginator=Paginator(book_list,11)
num_pages=paginator.num_pages
#总页数过多时,不一一显示
if num_pages>11:
if current_page_num<6:
page_range=range(1,12)
elif current_page_num>num_pages-5:
page_range=range(num_pages-10,num_pages+1)
else:
page_range=range(current_page_num-5,current_page_num+6)
else:
page_range=paginator.page_range
page=paginator.page(current_page_num)
django的分页器的更多相关文章
- 使用Django实现分页器功能
要使用Django实现分页器,必须从Django中导入Paginator模块 from django.core.paginator import Paginator 假如现在有150条记录要显示,每页 ...
- 【django之分页器】
一.什么是分页功能 二.Django的分页器(paginator) 语法: paginator = Paginator(book_list, 8) #8条一页print("count:&qu ...
- django自定义分页器
一 django 的分页器 1 批量创建数据 批量导入数据: Booklist=[] for i in range(100): Booklist.append(Book(title="boo ...
- Django组件-分页器
Django的分页器(paginator) view from django.shortcuts import render,HttpResponse # Create your views here ...
- Django框架----分页器(paginator)
Django的分页器(paginator) view.py from django.shortcuts import render,HttpResponse # Create your views h ...
- Django组件(一) Django之分页器
Django的分页器(paginator)简介 在页面显示分页数据,需要用到Django分页器组件 from django.core.paginator import Paginator Pagina ...
- Django 组件-分页器
Django的分页器(paginator) view from django.shortcuts import render,HttpResponse # Create your views here ...
- Django - 文件上传、Django组件 - 分页器(paginator)
一.文件上传准备知识 - Content-Type 1.请求头 - Content-Type Content-Type指的是请求体的编码类型,常见的类型共有3种: 1)application/x-ww ...
- Django 进阶(分页器&中间件)
分页 Django的分页器(paginator) view from django.shortcuts import render,HttpResponse # Create your views h ...
随机推荐
- jQuery属性操作(四)
通过阅读jQuery为属性操作封装的基本方法和为处理兼容性问题提供的hooks,发现jQuery在属性操作方面并没有做过多的设计,只是处理一下兼容性问题,然后调用基础的DOM操作方法.以下是对JQue ...
- java(3) 面向对象
1.super关键字 * 使用super关键字调用父类的成员变量和成员方法.具体格式: super.成员变量 super.成员方法([参数1,参数2...]) * 使用super关键字调用父类的构造方 ...
- 题目1004:Median(qsort函数自定义cmp函数)
题目链接:http://ac.jobdu.com/problem.php?pid=1004 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...
- maven打war包的过程中,都用了哪些插件呢?
一.maven生命周期 http://ifeve.com/introduction-to-the-lifecycle/ https://maven.apache.org/guides/introduc ...
- jpa中时间戳格式应该用哪种类型
遇到个bug,数据库时间存储用了datetime,但是下面的java jpa代码,查询回来,却只有日期. String innerSql = getInnerQuery(departmentId, k ...
- 关于sizeof和strlen
已知 char *str1="absde"; char str2[]="absde"; char str3[8]={'a',}; char ss[] = &qu ...
- stopImmediatePropagation和stopPropagation (事件、防止侦听)
参考: ActionScript 3.0 Step By Step系列(六):学对象事件模型,从点击按扭开始 actionscript宝典 一.事件模型 egret中的事件模型和flash是一样的,但 ...
- [转][darkbaby]任天堂传——失落的泰坦王朝(下)
即使是日本业界人士也对1999年发生的“口袋妖怪所有权风波”知之甚少,实际上这个事件的结局足以改变游戏产业未来数十年的势力图,山内溥凭借着个人的睿智让任天堂再次渡过了命运的暗礁,而另一颗曾经炙手可热的 ...
- [分布式系统学习]阅读笔记 Distributed systems for fun and profit 之一 基本概念
因为工作的原因,最近打算看一些分布式学习的资料.其中这个http://book.mixu.net/distsys/就是一篇非常适合分布式入门的介绍. 这个短小的材料有下面5个小的章节,图文并茂,也没有 ...
- Git之远程仓库
1,注册账号 登录https://github.com注册一个账号 2,上传公钥 本地CentOS使用命令 ssh-keygen -t rsa生成秘钥 复制秘钥输入到github网站 3,新建仓库 4 ...