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
您可能感兴趣
- pythondjango后台管理(基于腾讯云服务器部署微信小程序后台服务Python+Django)
- django部署(Django 中间键和上下文处理器的使用)
- django 如何实现高并发(Django如何防止定时任务并发浅析)
- pythondjango图解(详解Django-restframework 之频率源码分析)
- nginx django部署(uwsgi+nginx代理Django无法访问静态资源的解决)
- django用户上传文件怎么接收(Django框架文件上传与自定义图片上传路径、上传文件名操作分析)
- django连接web实现登录功能(解决django前后端分离csrf验证的问题)
- django admin 开发实例(Django给admin添加Action的步骤详解)
- django框架基础之路由详解(详解Django中CBVClass Base Views模型源码分析)
- django用户权限管理(Django 内置权限扩展案例详解)
- django框架详解(Django如何开发简单的查询接口详解)
- django框架教程学习(使用Django简单编写一个XSS平台的方法步骤)
- django参数配置(详解重置Django migration的常见方式)
- django学生管理系统搭建(Django实现学员管理系统)
- django测试服务器静态资源放哪里(Django使用redis缓存服务器的实现代码示例)
- django框架运行流程(Django+Xadmin构建项目的方法步骤)
- 得这个 难治病 的人太多了,300个人赶到杭州商量怎么办(得这个难治病的人太多了)
- 经度,世界时间腕表的灵魂(世界时间腕表的灵魂)
- 阿里最新财报公布 三季度营收增长3 ,将增加150亿美元回购额度 在美股价小涨(阿里最新财报公布)
- 赵薇时胖时瘦 最近变美少女 原因在这里 躺着就变瘦(赵薇时胖时瘦最近变美)
- 学会这26种姿势,你就可以和兵哥哥切磋了(你就可以和兵哥哥切磋了)
- 吴彦祖陈冠希 恩怨 ,失去曾让他流泪的女友,终遇走过18年真爱(吴彦祖陈冠希恩怨)
热门推荐
- vue 为什么使用虚拟dom(Vue虚拟Dom到真实Dom的转换)
- 怎么用docker搭建测试环境(基于docker 搭建Prometheus+Grafana的过程详解)
- mysql怎么和sqlyog连接(Mysql桌面工具之SQLyog资源及激活使用方法告别黑白命令行)
- 前端ui 滑动条(AmazeUI 手机版页面的顶部导航条Header与侧边导航栏offCanvas的示例代码)
- centos6tomcat安装(Tomcat CentOS安装实现过程图解)
- hive分析后如何录入mysql(hive从mysql导入数据量变多的解决方案)
- vue轮播图代码(vue实现无缝轮播效果跑马灯)
- dedecms手机独立域名(DedeCMS Wap.php 绑定域名的解决办法)
- 云服务器租用的因素(云服务器租用都需要注意什么?如何选择好的云服务器商?)
- python面向对象的介绍(Python面向对象思想与应用入门教程类与对象)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9