django的分页器
2024-08-26 13:58:54
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)
最新文章
- Reactive Extensions介绍
- Python爬虫代理池
- MongoDB安装与启动
- Redis集群的部署
- Offer_answer_with_SDP_rfc3264
- gym101090 I Painting the natural numbers
- 【hdu3341-Lost&#39;s revenge】DP压缩+AC自动机
- Android 注解的一些应用以及原理
- 【ps】gif动态图白边问题
- bootstrap 按钮 文本 浮动 隐藏
- 获取子物体数量---Transform.childCount
- 认识JWT
- eslint常用关闭校验语句
- 树莓派3 之 USB摄像头安装和使用
- springmvc shiro整合cas单点登入
- PHP开启mysqli扩展
- linux grep 正则表达式
- MapReduce原理2
- java在注解中绑定方法参数的解决方案
- Web 跨域请求
热门文章
- C#网络编程TCP通信实例程序简单设计
- [Error: Failed to find &#39;ANDROID_HOME&#39; environment variable. Try setting setting it manually
- Linux操作系统定时任务系统 Cron 入门
- 分布式搜索elasticsearch几个概念解析
- Unity3D 记第二次面试
- How are you vs How are you doing
- 分享10款效果惊艳的HTML5图片特效【转】
- 基于pandas python的美团某商家的评论销售(数据分析)
- windows下Anaconda3配置TensorFlow深度学习库
- 实现 TensorFlow 架构的规模性和灵活性