django分页器图(Django框架实现分页显示内容的方法详解)
类别:脚本大全 浏览量:2905
时间:2021-10-03 01:26:10 django分页器图
Django框架实现分页显示内容的方法详解本文实例讲述了django框架实现分页显示内容的方法。分享给大家供大家参考,具体如下:
分页
1、作用
数据加载优化
2、前端引入bootstrap样式:
|
{ # 引入bootstrap样式的cdn资源 #} <link href = "https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel = "external nofollow" rel = "stylesheet" > |
引入分页器:
|
<li id = "rootbox" > <h1>文章列表< / h1> <ul id = "bloglist" > { # 遍历博文 #} { % for blog in page.object_list % } { # 显示博文标题 #} <li> <a href = "{% url 'app:readblog' blog.id %}" rel = "external nofollow" ><h3>{{ blog.title }}< / h3>< / a> < / li> { % endfor % } < / ul> { #分页器:html内容拷贝于bootstrap网站-组件-分页#} { # bootstrap是一整套成熟经典的页面组件框架 #} <nav aria - label = "page navigation" > <ul class = "pagination" > { # 上一页按钮 #} { # 如果有上一页 #} { % if page.has_previous % } <li> { # 点击超链接,对上一页的页面发起访问 #} <a href = "{% url 'app:blogs' page.previous_page_number %}" rel = "external nofollow" aria - label = "previous" > <span aria - hidden = "true" >«< / span> < / a> < / li> { # 如果没有上一页 #} { % else % } { # 当没有上一页时,阅读bootrap文档得知,对当前li使用disabled样式 #} <li class = "disabled" > { # href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ,处于禁用状态的按钮被点击时直接跳转本页 #} <a href = "#" rel = "external nofollow" rel = "external nofollow" rel = "external nofollow" rel = "external nofollow" aria - label = "previous" > <span aria - hidden = "true" >«< / span> < / a> < / li> { % endif % } { # 页码按钮 #} { # 遍历传入的页码范围 #} { % for p in pagerange % } { # 如果页码=当前页页码 #} { % ifequal p currentpage % } { # 被选中的页码具有高亮效果,阅读bootrap文档得知,对当前li使用active样式 #} { # {% url 'app:blogs' p %} 点击页码,对第p页的路由发起访问 #} <li class = "active" ><a href = "{% url 'app:blogs' p %}" rel = "external nofollow" rel = "external nofollow" >{{ p }}< / a>< / li> { % else % } { # 非当前页页码普通显示 #} <li><a href = "{% url 'app:blogs' p %}" rel = "external nofollow" rel = "external nofollow" >{{ p }}< / a>< / li> { % endifequal % } { % endfor % } { # 下一页按钮 #} { % if page.has_next % } <li> { # 点击超链接,对下一页的页面发起访问 #} <a href = "{% url 'app:blogs' page.next_page_number %}" rel = "external nofollow" aria - label = "next" > <span aria - hidden = "true" >»< / span> < / a>< / li> { % else % } { # 当没有下一页时,阅读bootrap文档得知,对当前li使用disabled样式 #} <li class = "disabled" > { # href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ,处于禁用状态的按钮被点击时直接跳转本页 #} <a href = "#" rel = "external nofollow" rel = "external nofollow" rel = "external nofollow" rel = "external nofollow" aria - label = "next" > <span aria - hidden = "true" >»< / span> < / a>< / li> { % endif % } < / ul> < / nav> < / li> |
3、paginator
- 数据分页工具
-
对象创建
- paginator(数据集,每一页数据数)
-
属性
- count:对象总数
- page_range:页码列表,从1开始
- num_pages:页面总数
-
方法
- page(整数): 获得一个page对象
-
常见错误
- invalidpage:page()传递无效页码
- pagenotaninteger:page()传递的不是整数
- empty:page()传递的值有效,但是没有数据
4、page
- 具体的某一页面
- 对象获得,通过paginator的page()方法获得
-
属性
- object_list:当前页面上所有的数据对象
- number:当前页的页码值
- paginator: 当前page关联的paginator对象
-
方法
- has_next():判断是否有下一页
- has_previous():判断是否有上一页
- has_other_pages():判断是否有上一页或下一页
- next_page_number():返回下一页的页码
- previous_page_number():返回上一页的页码
- len():返回当前页的数据的个数
|
# 显示博文列表 # pagenum=路由参数=用户想要查看第几页 def showblogs(request, pagenum): # 查询数据库获取所有博文 blogs = blog.objects. all () # 构建分页器对象,blogs=所有博文,2=每页显示的个数 paginator = paginator(blogs, 2 ) # 获取第n页的页面对象 page = paginator.page(pagenum) # paginator和page的常用api # page.previous_page_number() # page.next_page_number() # page.has_previous() # page.has_next() # 构造页面渲染的数据 ''' 渲染需要的数据: - 当前页的博文对象列表 - 分页页码范围 - 当前页的页码 ''' data = { # 当前页的博文对象列表 'page' : page, # 分页页码范围 'pagerange' : paginator.page_range, # 当前页的页码 'currentpage' : page.number, } # 将数据丢给页面渲染 return render(request, 'blogs.html' , context = data) |
希望本文所述对大家基于django框架的python程序设计有所帮助。
原文链接:https://blog.csdn.net/lm_is_dc/article/details/80528010
您可能感兴趣
- djangorestfulframework教程(Django restframework 源码分析之认证详解)
- django操作数据库(详解django+django-celery+celery的整合实战)
- django变量怎么使用(django的settings中设置中文支持的实现)
- django详情页面获取用户id(Django项目中添加ldap登陆认证功能的实现)
- django框架基础之路由详解(Django中如何防范CSRF跨站点请求伪造攻击的实现)
- django菜单动态生成(django富文本编辑器的实现示例)
- djangoapi接口开发(Django使用AJAX调用自己写的API接口的方法)
- django条件序列化(Django之无名分组和有名分组的实现)
- django框架详解(Django如何开发简单的查询接口详解)
- django中间件路径校验(Django中使用Whoosh进行全文检索的方法)
- django连接mysql不支持中文插入(Django创建项目+连通mysql的操作方法)
- django 获取请求参数(深入理解Django-Signals信号量)
- django框架基础之路由详解(详解Django中CBVClass Base Views模型源码分析)
- django过滤器(django 自定义过滤器的实现)
- python基于django的博客系统(利用django+wechat-python-sdk 创建微信服务器接入的方法)
- django分页器图(Django框架实现分页显示内容的方法详解)
- 苹果正式发布自研芯片M1 5nm 32核心 彻底放弃Intel(苹果正式发布自研芯片M1)
- 苹果自研芯片跑分对比 A16芯片排名靠后,M1系列霸榜(苹果自研芯片跑分对比)
- X86处理器的梦魇 苹果M1自研芯片到底有多强(苹果M1自研芯片到底有多强)
- 泰剧《爱欲之神》Boom kitkong和Great合体杂志(泰剧爱欲之神Boomkitkong和Great合体杂志)
- 素人恋爱综艺火药味十足 男生为赢得芳心集体扯头花,真是出好戏(素人恋爱综艺火药味十足)
- 《囧妈》为何受抵制 春节七部影片撤档背后的责任与博弈(囧妈为何受抵制)
热门推荐
- javascript基本类型是哪些(详解javascript中的Strict模式)
- canvas绘制图像文件方法(Canvas多边形绘制的实现方法)
- yii框架使用教程(Yii框架操作cookie与session的方法实例详解)
- asp.net把word文档转换成pdf
- mysql left join索引怎么使用(详解mysql 使用left join添加where条件的问题分析)
- vuejs图片缩放裁切(vue+js点击箭头实现图片切换)
- php怎么设置curl(php curl发送请求实例方法)
- 宝塔面板php能切换吗(BT宝塔面板更换网站PHP版本)
- extjs中treepanel属性和方法
- Javascript中apply、call、bind
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9