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 ...
随机推荐
- 《代码大全》阅读笔记-33-个人性格(personal character)
很多好的编程做法都能减轻你的大脑灰质细胞(指脑力)的负担. 将系统"分解",是为了使之易于理解("设计的层次"). 进行审查.评审和测试正是为了减少人为失误.如 ...
- Centos 安装 MySQL-python
更新yum yum update yum install mysql-devel yum install gcc yum install python-devel pip install MySQL- ...
- [工具] 知网(CNKI)文献下载工具
https://github.com/amyhaber/cnki-downloader 用于免费搜索,下载CNKI上的各类文献资料
- Java秒杀简单设计三:数据封装类
上一篇https://www.cnblogs.com/taiguyiba/p/9828984.html 整合了数据库表和Dao层代码 这一篇继续设计数据封装类: 涉及到获取秒杀地址,查询,返回秒杀结果 ...
- Java虚拟机七 虚拟机监控
jstack 用于导出Java应用程序的线程堆栈:jstack [-l] <pid> -l 选项用于打印锁的附加信息 jstack -l 2348 > /data/deadlock. ...
- npm publish 发布
前言 我们npm publish发布的时候,一定是本地文件发布到远程仓库,并且登录到http://registry.npmjs.org(即npm adduser或npmlogin)之后,才可以进行发布 ...
- 关于*** WARNING L15: MULTIPLE CALL TO SEGMENT
编写51程序的时候,有时候会在主函数和中断函数里面调用同一个函数,如果正的出现这种情况,编译器会提出 这种警告: *** WARNING L15: MULTIPLE CALL TO SEGMENT(重 ...
- 【vue】vue.js安装教程/vue项目搭建
前提:已安装nodejs——npm (备注教程 “物理安装” ) 第一步:建了一个managerSys文件夹,用于保存项目 第二步:从cmd进入该文件夹,之后开始安装vue.js相关 1)在该项 ...
- php无限极分类递归与普通
1. 递归 public function getInfo(){$data=$this->select();$arr=$this->noLimit($data,$f_id=0,$level ...
- poj3168 Barn Expansion【计算几何 平面扫描】
Farmer John has N (1 <= N <= 25,000) rectangular barns on his farm, all with sides parallel to ...