django Paginator分页+Boostrap样式快速生成分页按钮

Django的分页功能——Paginator 写一篇博客记录Django.core.paginator的Paginator方法的使用 一、导入Paginator from django.core.paginator import Paginatror Paginator(object_list,per_page,orphans = 0,allow_empty_first_page = True) 二、Paginator方法的一些参数: ... 阅读详情

django自带分页功能,方便我们快速调用,更多介绍见官方文档
1.导入

from django.core.paginator import Paginator

2.属性和方法

p = Paginator(object_list, per_page, orphans=0, allow_empty_first_page=True)
#构造Paginator对象
#object_list:要分页的对象,可以是列表,元组,或django中的QuerySet等
#per_page:每页最多的文章数
#orphans:当最后一页的文章数小于或等于该值时,这些文章将被自动合并到前一页
#allow_empty_first_page:是否允许第一页为空

#属性
p.count #文章总数
p.num_pages  #总分页数
p.page_range #页码范围,返回一个列表,从1开始,如[1,2,3,4]

#方法
page = p.page(number) #返回指定页码的page对象,若不存在则抛出错误

#page对象的属性和方法
Page.object_list  #包含当前页的所有对象列表
Page.number       #当前页的页码,从1开始
Page.has_next()   #是否有下一页,若有返回True
Page.has_previous()  #是否有上一页,若有返回True
Page.has_other_pages()  #是否有下一页或上一页,若有返回True
Page.next_page_number() #返回下一页的页码
Page.previous_page_number() #返回上一页的页码
Page.start_index()  #返回当前页的第一个对象在所有对象列表中的序号
Page.end_index()  #返回当前页的最后一个对象在所有对象列表中的序号

3.例子
views.py

def news(request,type): 
	articles = Article.objects.all().filter(category__name = type).order_by('-time')  #导入的Article模型
	p = Paginator(articles,10)   #分页,10篇文章一页
	if p.num_pages <= 1:  #如果文章不足一页
		article_list = articles  #直接返回所有文章
		data = ''  #不需要分页按钮
	else:
		page = int(request.GET.get('page',1))  #获取请求的文章页码,默认为第一页
		article_list = p.page(page) #返回指定页码的页面
		left = []  # 当前页左边连续的页码号,初始值为空
		right = []  # 当前页右边连续的页码号,初始值为空
		left_has_more = False  # 标示第 1 页页码后是否需要显示省略号
		right_has_more = False  # 标示最后一页页码前是否需要显示省略号
		first = False   # 标示是否需要显示第 1 页的页码号。
        # 因为如果当前页左边的连续页码号中已经含有第 1 页的页码号,此时就无需再显示第 1 页的页码号,
        # 其它情况下第一页的页码是始终需要显示的。
        # 初始值为 False
		last = False  # 标示是否需要显示最后一页的页码号。
		total_pages = p.num_pages  
		page_range = p.page_range  
		if page == 1:  #如果请求第1页
			right = page_range[page:page+2]  #获取右边连续号码页
			if right[-1] < total_pages - 1:    # 如果最右边的页码号比最后一页的页码号减去 1 还要小,
            # 说明最右边的页码号和最后一页的页码号之间还有其它页码,因此需要显示省略号,通过 right_has_more 来指示。
				right_has_more = True
			if right[-1] < total_pages:   # 如果最右边的页码号比最后一页的页码号小,说明当前页右边的连续页码号中不包含最后一页的页码
            # 所以需要显示最后一页的页码号,通过 last 来指示
				last = True
		elif page == total_pages:  #如果请求最后一页
			left = page_range[(page-3) if (page-3) > 0 else 0:page-1]  #获取左边连续号码页
			if left[0] > 2:
				left_has_more = True  #如果最左边的号码比2还要大,说明其与第一页之间还有其他页码,因此需要显示省略号,通过 left_has_more 来指示
			if left[0] > 1: #如果最左边的页码比1要大,则要显示第一页,否则第一页已经被包含在其中
				first = True
		else:  #如果请求的页码既不是第一页也不是最后一页
			left = page_range[(page-3) if (page-3) > 0 else 0:page-1]   #获取左边连续号码页
			right = page_range[page:page+2] #获取右边连续号码页
			if left[0] > 2:
				left_has_more = True
			if left[0] > 1:
				first = True
			if right[-1] < total_pages - 1:
				right_has_more = True
			if right[-1] < total_pages:
				last = True
		data = {    #将数据包含在data字典中
			'left':left,
			'right':right,
			'left_has_more':left_has_more,
			'right_has_more':right_has_more,
			'first':first,
			'last':last,
			'total_pages':total_pages,
			'page':page
		}
	return render(request,'news.html',context={
		'article_list':article_list,'data':data
	})

html

{% if data %}
			<ul id="pages" class="pagination pagination-sm pagination-xs">
				{% if data.first %}
					<li><a href="?page=1">1</a></li>
				{% endif %}
				{% if data.left %}
					{% if data.left_has_more %}
						<li><span>...</span></li>
					{% endif %}
					{% for i in data.left %}
						<li><a href="?page={{i}}">{{i}}</a></li>
					{% endfor %}
				{% endif %}
				<li class="active"><a href="?page={{data.page}}">{{data.page}}</a></li>
				{% if data.right %}
					{% for i in data.right %}
						<li><a href="?page={{i}}">{{i}}</a></li>
					{% endfor %}
					{% if data.right_has_more %}
						<li><span>...</span></li>
					{% endif %}
				{% endif %}
				{% if data.last %}
					<li><a href="?page={{data.total_pages}}">{{data.total_pages}}</a></li>
				{% endif %}
			</ul>
{% endif %}

这里写图片描述


如果觉得这篇文章帮助了您,请打赏一个小红包鼓励作者继续创作哦!!!

在这里插入图片描述

一款基于Bootstrap的js分页插件Bootstrap Paginator 参数名 数据类型 默认值 描述 bootstrapMajorVersion number 2 搭配使用的Bootstrap版本,2.X 的 分页必须使用div元素,3.X分页的必须使用ul元素。请注意与所使用的bootstrap版本对应上。 size string “normal” 设置控件的显示大小,是个字符串. 允许的值: ... 阅读详情

相关推荐

Django template使用Bootstrap实现分页功能

关于Django template自定义分页器功能实现 Bootstrap 源码地址:(https://github.com/thinksea/bootstrap-pagination) 下载源码:git clone https://github.com/thinksea/bootstrap-pagination或者用链接打开去下载zip。这个不再描述 或者 然后将code放在你自己想放的位置。我一般放在project下的static/文件下,如图: 3.然后在你的template/index.h

KinoJr 561

django实现分页的方法,Paginator对象的用法(django模板之forloop)

https://blog.youkuaiyun.com/cain/article/details/6623717(django模板之forloop) Paginator对象: 类Paginator: class Paginator(object_list,per_page,orphans=0,allow_empty_first_page=True) 必须提供的参数: object_list:一个列表...

執筆冩回憶 997

Django结合Bootstrap完美实现分页效果

Django结合Bootstrap完美实现分页效果,其中控件的分页根据内容自适应调整

Django Bootstrap Pagination 教程

Django Bootstrap Pagination 教程 项目介绍 Django Bootstrap Pagination 是一个针对 Django 框架设计的插件,它简化了在 Django 应用中实现基于 Bootstrap 样式的分页功能的过程。该插件允许开发者轻松地将响应式分页集成到其网站的列表视图中,提高用户体验。通过利用 Bootstrap 的样式和 Django 的模板系统,开发者...

gitblog_00944的博客 851

Django+Paginator模块+LayUi实现分页(精简版)

Django之Paginator分页模块+layui表格(精简版) 上一篇也分享了一个关于Paginator+layui的ajax动态加载数据的博客,只是用到了layui静态表格、样式,功能上是根据自己思路用jQuery动态加载数据的博客分享,说白了上一篇是基本原生的写法,并没有用到layui框架内置的模块写法。 这次,给大家分享layui动态表格内置的方法结合django分页模块来实现表格的一系列操作,简单实用方便。 Django:非常强大的web开发框架 Paginator:Django自带的一个轻量级分页模块 layui:类UI(谐音),一款强大的国产前端框架,相对Bootstrap来

Django使用paginator插件实现翻页功能的实例

今天小编就为大家分享一篇关于Django使用paginator插件实现翻页功能的实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

django项目实战三(django+bootstrap实现增删改查)进阶分页

接上一篇知识点:分页的封装。

春天的波菜 577

Bootstrap分页插件之Bootstrap Paginator实例详解

Bootstrap Paginator是一款基于Bootstrap的js分页插件,功能很丰富,个人觉得这款插件已经无可挑剔了,感兴趣的朋友跟着脚本之家小编一起学习吧

python测试开发django-115.Paginator分页器展示table表格数据

前言 django自带的分页器Paginator,可以实现分页 Paginator 分页器 paginator模块有3个跟分页相关的类 Paginator:分页器对象 PageNotAnInteger:页码不是一个整数时引发该异常 EmptyPage:页码不在有效范围时(即数据为空)引发该异常 导入Paginator类,可以看到一些内置属性 from django.core.paginator import Paginator class Paginator: def __init__(se

qq_27371025的博客 943

懒人精灵手游内存技术分析

教学声明:全套教程教学用到的游戏采用手游私服网游进行测试,不针对任何游戏。教学只做计算机技术研究,不做其他用途。

yizhihaoren123的博客 1656

格拉姆角场实战:东南大学轴承故障诊断数据集深度剖析与代码实现

本文深入剖析了东南大学轴承故障诊断数据集,并提供了完整的格拉姆角场实战应用指南。通过将一维振动信号转换为二维图像,结合卷积神经网络,构建了端到端的故障诊断流程。文章详细解读了数据集的工况、通道含义与故障类型,并附有可运行的代码实现,为工业设备智能运维提供了有效解决方案。

night的博客 509

django 自定义分页与bootstrap分页结合

django中有自带的分页模块Paginator,想Paginator提供对象的列表,就可以提供每一页上对象的方法。 这里的话不讲解Paginator,而是自定义一个分页类来完成需求: class Pagination(object): """用于Model字段值的选择""" def __init__(self): pass @classmeth

云中不知人的专栏 4172

NVIDIA Tao Toolkit环境配置踩坑

请搭配食用该文章为 Tao 安装中可能出现的问题进行解答,如果存在本文章中没出现的问题,欢迎提问,由我复现后更新文章。由于大部分云服务器厂商不能支持 docker,因此我使用的环境为2023年5月27日在平台租的 3080 旧版环境进行实验。

qq_36630208的博客 771

结合Bootstrap在Django中实现分页(非常详细并且完整的教程,适合新手,附代码,windows平台下开发)

1. 目标 最终的分页效果会根据实际的内容条目数量自适应的显示,效果图如下:             下面进入具体的开发步骤。 2.安装环境        本教程采用Bootstrap作为前端框架,采用该前端框架可以极大的减少前端代码开发量。本文重点讲解利用Bootstrap提供的分页组件实现分页效果。 安装python:本示例采用Python3.6.1进行开发,因此需要先装好Pyth...

你是怎么做到的?我为什么做不到 5969

脑影像分析工具JuSpace:跨模态关联的神经递质系统研究利器

JuSpace是一款专业的脑影像分析软件,专为跨模态关联研究设计。它能够将功能或结构磁共振影像与神经递质PET/SPECT图谱进行空间关联分析,帮助研究者探索宏观脑影像异常与微观神经化学系统(如多巴胺、血清素)之间的潜在联系,是神经精神疾病机制研究的强大工具。

c2d3e4f的博客 544

在Android Jetpack Compose中实现夜间模式

Android基于Compose的深色主题实现

虎哥LoveDroid 1236

前端分页插件bootstrap-paginator的使用:(之前用的插件都没整理,后悔。。。。。)

要引入的js文件: 初始化例子: $(function () { //渲染一级分类 window.page = 1 var render = function () { getFirstCategoryData(function (data) { $('tbody').html(template('tbody', data)) // 分页插件的初始化 ..

qq_42039912的博客 396

lammps案例:Cu三点弯曲模拟

大家好,我是小马老师。 本文分享一个Cu弯曲的案例。 本案例参考三点弯曲实验,三点弯曲试验是将试样放在弯曲装置上,在试样上加载进行弯曲试验,直到达到规定的弯曲程度或发生断裂。 模拟原理是在z方向固定两侧端点,在x和y方向不固定,模拟左右两个支撑点,中间压块向下运动实现弯曲。 初始结构: 运行结果为: 模拟的重点是使用fix setforce命令压住左右两端,使其不能沿z轴上下移动,但是又不能在xy方向限制其移动。 压块的运动方式比较简单,给其一个下压的速度即可。 为防止压块变形,使用setforce命

lammps_jiayou的博客 2279

python django paginator分页

python django paginator

hexiaodouaipiqiu的博客 3361

有效Dk值提取方法的仿真分析

通过本文的仿真对比分析,提取有效Dk值方面,TDR技术在一些固定的场景下,依然有其参考应用价值,而随着VNA功能的不断增强和高精度测量手段的不断更新,双端口Delta-L技术才是主流评估方法,而单端口Delta-L技术则可以作为其降本增效的方案补充。

一只豌豆象的博客 1827

32、生物信息学中的符号、缩写及相关概念解析

本文详细解析了生物信息学中常用的符号、缩写及相关概念,涵盖概率理论、函数表示、模型结构、图与集合、维度参数、神经网络、隐藏马尔可夫模型、双向架构、语法系统、系统发育树、微阵列分析以及核方法与支持向量机等多个领域。通过表格和mermaid流程图的形式,系统梳理了各类符号的定义与应用场景,并介绍了常见缩写的全称与意义。文章旨在帮助研究人员准确理解生物信息学中的基础术语,提升对基因表达分析、序列建模、机器学习等技术的理解与应用能力。

rrr55的博客 146

基于Django+Bootstrap框架,设计微型小说网站

一、项目背景:   为了回顾关于django的文件上传和分页功能,打算写一个微型的小说网站练练手。花了一个下午的时间,写了个小项目,发现其中其实遇到了许多问题,不过大部分通过debug之后就解决了,其他部分通过阅读了Pagination插件以及Bootstrap-FileInput插件的官方文档。 二、详细设计:   省去小说网站的用户模块的功能,小说网站主要的功能就是上传文件,在线阅读小说...

weixin_34408624的博客 1057

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

利用Bootstrap的分页组件实现分页效果

利用Bootstrap的分页组件实现分页效果

昊虹AI笔记 6240

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

django中的Paginator和Page

class Paginator(object): def __init__(self, object_list, per_page, orphans=0, allow_empty_first_page=True): self.object_list = object_list self._check_object_lis...

坑底Z蛙 1343

django分页(Paginator)

  有的时候我们会在页面中展示大量数据,全部都放在一页可能会降低用户体验,Django提供了一个Paginator类来帮助我们管理分页数据。 起步 介绍分页器对象的一些属性和方法 1. 引入该类及相关异常模块: from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage Paginator:...

大白成长记 1万+
上一篇: django-simple-captcha 验证码插件介绍
下一篇: 上传图片快速预览HTML5 FileReader + Window.URL+滤镜(兼容低版本IE)
PAT-python-zjw
博客等级 码龄10年 381粉丝 408原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值