django分页实现
Django分页
Django提供了一个类Paginator用于分页,但Paginator并不具体管理具体的页的处理,而是使用Page对象管理具体页面。下面我们以一个具体的例子来说明一下分页的实现
文章模型:
class Articles(models.Model):tid = models.AutoField(primary_key=True)cid = models.ForeignKey('Category', models.DO_NOTHING, db_column='cid', blank=True, null=True)description = models.CharField(max_length=300)title = models.CharField(max_length=255)content = models.CharField(max_length=20000, blank=True, null=True)author = models.CharField(max_length=255, blank=True, null=True)pub_date = models.DateTimeField()replycount = models.IntegerField(blank=True, null=True)hits = models.IntegerField()isdeleted = models.IntegerField()noreply = models.IntegerField(blank=True, null=True)iscreator = models.IntegerField(blank=True, null=True)isrecommend = models.IntegerField(blank=True, null=True)tags = models.CharField(max_length=255, blank=True, null=True)class Meta:db_table = 'articles'
表中数据:
分页器对象
格式: Paginator(<query_set查询集>,每页显示数据的条数)
对象的属性
count 分页对象的个数
num_pages 总页数
page_range 页码的列表
方法
page(num) 返回page对象 如果给定的页码不存在 则抛出异常
例子代码:
# 需要导入Paginator类
from django.core.paginator import Paginator pagination = Paginator(articles,10)
page 对象
page对象具体负责每页的处理,包括每页的数据,当前页的页码,是否有上一页或下一页等。
类别 | 名称 | 说明 |
---|---|---|
属性 | object_list | 当前页码上的所有数据 |
属性 | number | 当前页码值 |
属性 | paginator | 返回Paginator的对象 |
方法 | has_next | 是否有下一页 |
方法 | has_previous | 是否有上一页 |
方法 | has_other_pages | 是否有上一页 或者下一页 |
方法 | next_page_number | 返回下一页的页码 |
方法 | previous_page_number | 返回上一页的页码 |
方法 | len | 返回当前页数据的个数 |
使用:
# 由分页器对象调用page方法创建,参数是当前页码
pager = pagination.page(page)
具体例子
路由配置(urls.py)
from django.urls import path
from App import views
app_name = "App"
urlpatterns = [#.....path("list/<int:page>/",views.article_list),]
视图(views.py)
# views.py
def article_list(request,page=1):articles = Articles.objects.all()# 实例化分页对象,一页两条记录pagination = Paginator(articles,10)page = pagination.page(page) #某一页的分页对象return render(request,'userlist.html',locals())
前端页面(list.html)
使用了bootstrap的样式
<!-- 部分代码 -->
<div class="page-box layui-row"><div id="pageItem"><nav aria-label="Page navigation"><ul class="pagination">{# 判断是不是有前一页 #}{% if pager.has_previous %}<li><a href="/list/{{ pager.previous_page_number }}/" aria-label="Previous"><span aria-hidden="true">«</span></a></li>{% else %}{# 如果没有前一页 禁止点击前一页 #}<li class="disabled"><a href="/list/{{ page }}/" aria-label="Previous"><span aria-hidden="true">«</span></a></li>{% endif %}{# 循环生成页码, page_range是一个整数页码列表 #}{% for cur in pagination.page_range %}{# 判断是不是当前页,如果是高亮显示 #}{% if cur == page %}<li class="active"><a href="/list/{{ cur }}/">{{ cur }}</a></li>{% else %}<li><a href="/list/{{ cur }}/">{{ cur }}</a></li>{% endif %}{% endfor %}{# 判断是不是有下一页 #}{% if pager.has_next %}<li><a href="/list/{{ pager.next_page_number }}/" aria-label="Next"><span aria-hidden="true">»</span></a></li>{% else %}<li class="disabled"><a href="/list/{{ page }}/" aria-label="Next"><span aria-hidden="true">»</span></a></li>{% endif %}</ul></nav></div></div>
最终效果:
django分页实现相关推荐
- 2019.03.20 mvt,Django分页
MVT模式 MVT各部分的功能: M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理. V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返回响应. T全拼为T ...
- 第八篇Django分页
Django分页 1.复杂版 data = []for i in range(1, 302):tmp = {"id": i, "name": "ale ...
- Django 分页查询并返回jsons数据,中文乱码解决方法
Django 分页查询并返回jsons数据,中文乱码解决方法 参考文章: (1)Django 分页查询并返回jsons数据,中文乱码解决方法 (2)https://www.cnblogs.com/jo ...
- django ajax 查询,Django分页和Ajax查询
在Django中,实现分页以在多个页面上显示查询项目是非常简单的.使用Ajax仅更新实际发生更改的页面位,而不是每次加载整个页面也是非常直接的.但是,当我们将两者结合在一起时,我发现它有点问题.Dja ...
- Django分页+增删改查
Django分页+增删改查 演示 源码下载地址:https://download.csdn.net/download/qq_35622606/87719248 其他小笔记: django-admin. ...
- django分页查询
Django分页查询(整合vue) 一.django部分 在view.py里添加分页查询方法 from django.http import JsonResponse from django.view ...
- Django 分页和使用Ajax5.3
分页 Django提供了一些类实现管理数据分页,这些类位于django/core/paginator.py中 Paginator对象 Paginator(列表,int):返回分页对象,参数为列表数据, ...
- Django分页的基本实现办法
Django自带一个分页模块Pagination,具体的参考官方文档,我在这里简单介绍一下具体的例子,模拟一个常用场景,列出部分的代码出来.场景是这样的:我们有一个blog表,其中有若干条记录,我们要 ...
- django分页模块
前端分页 将所有数据一次性返回给前端页面,再通过js进行分页,对数据库负担比较大. 后端分页 在数据库查询的时候,就查询出指定页的数据,不多查. Article.object.all()[:5] Qu ...
最新文章
- 关于jsp和eclipse服务器端的相关配置和JS的区别
- 李飞飞最新演讲全文:机器已能“看懂”图像和视频,但我们仍站在人工智能研究的起点
- (0089)iOS开发之iOS应用间相互跳转(URL Scheme)
- 牛客题霸 NC23 划分链表
- 夺命雷公狗---node.js---20之项目的构建在node+express+mongo的博客项目5mongodb在项目中实现添加数据...
- 网页益智游戏怎么制作_休息一下,或者:如何使用Java 12制作出色的益智游戏...
- Android开发群
- OpenCV修养(三)——图像处理(上)
- windows c语言 redis,windows上使用VS2012 C++语言调用Redis的解决方案
- CISICO 路由器和交换机的基本配置命令
- qq浏览器网页翻译_如何通过Edge浏览器调用“谷歌翻译”,将整个网页翻译为中文...
- 计算机课题推荐人意见,课题申请推荐人意见怎么写
- cmos电路多余输入端能否悬空_CMOS电路不使用的输入端不能悬空
- 鼠标按下并移动事件的解决方案
- word表格的编辑 计算机应用基础(4)
- android mms分析,在Android上解析应用程序/ smil MMS MIME类型
- FC5 安装 Xine
- 【RL笔记】基于tensorflow实现RL的policy based算法
- jwt无状态权限认证(pings-shiro-jwt)
- 什么是 Python Launcher?
热门文章
- Chtholly Tree (珂朵莉树) ODT
- Delfoi CUT 3D切割和精加工工艺离线编程软件丨衡祖仿真
- 集合的遍历之迭代器遍历
- 前端学习(二)Echarts入门——html实现简单echarts图例
- 展现工匠精神的德国“开放数据”国家行动计划
- [转]Java字符串转换为日期和时间比较大小
- 我个小菜鸡的博客都有人搬运,我都惊呆了——wsdchong
- DaZeng:3分钟搞定内网渗透之外网访问指定域名
- 苹果系统引导修复工具_苹果方面专家:搭载M1芯片的Mac电脑可引导其它系统 如Debian...
- 大数据时代,企业网络安全怎么守护?