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 ...
随机推荐
- OpenStack网络详解
本博客已经添加"打赏"功能,"打赏"位置位于右边栏红色框中,感谢您赞助的咖啡. Openstack需要对网络有一些了解才能进入openstack的世界,很多都是 ...
- SPOJ1007 VLATTICE - Visible Lattice Points
VLATTICE - Visible Lattice Points no tags Consider a N*N*N lattice. One corner is at (0,0,0) and th ...
- ELK系列一:ELK的安装
一.Elasticsearch.Kibana.Logstash.Elasticsearch-head的安装 ELK的安装 安装下载地址: https://www.elastic.co/cn/downl ...
- 2-1 nodejs和npm的安装和环境搭建
1.安装node.js (最新已经集成npm) https://nodejs.org/en/ 2.升级npm $ npm install -g npm $ cnpm install -g cnpm ...
- parent.relativePath' points at wrong local POM
这个错误通常是下载了子项目,没有把父项目下载下来. 子项目要依赖父项目的pom The relative path of the parent pom.xml file within the chec ...
- CentOS7.5搭建Solr7.4.0集群服务
一.Solr集群概念 solr单机版搭建参考: https://www.cnblogs.com/frankdeng/p/9615253.html 1.概念 SolrCloud(solr 云)是Solr ...
- jQuery ajax的前台代码编写
jQuery ajax的前台代码: <script type="text/javascript" src="/include/jquery/jquery-1.1.3 ...
- php中调用这个功能可以在web页面中显示hello world这个经典单词
php程序写的时间长了,自然对他所提供的功能了如指掌,他所提供的一大堆功能,真是觉得很好用,但有时候会发现php也缺少一些功能,自己总是会产生为php添加一些自定义的功能的想法.久而久之,终于今天憋不 ...
- informix数据库知识积累
一.嵌套查询 informix子查询:嵌套查询(1)select first 20 * from (select first 40 * from hlrquery_log order by id de ...
- POJ1860 Currency Exchange【最短路-判断环】
Several currency exchange points are working in our city. Let us suppose that each point specializes ...