Django 模型操作-分页(七)

一、连接MySql数据库

  1、先安装MySQL

  2、再安装MySQL驱动
      使用mysqlclient
      pip install mysqlclient

如果上面的命令安装失败, 则尝试使用国内豆瓣源安装:
 pip install -i https://pypi.douban.com/simple mysqlclient

二、在settings.py中配置

 

三、 book表的数据

四、手动分页和自动分页

1、函数视图

    手动分页

#手动分页
def get_pageinfo(request,page=1):# 每页显示6条数据per_page = 6# 分页分析# 数据[1,2,3,45,..100]# 第几页    数据范围   数据下标范围     切片#  page=1   1-6        0~5         [0:6]   =>   (1-1)*6  1*6#  page=2   7-12       6~11        [6:12]  =>   (2-1)*6  2*6#  page=3   13-18      12~17       [12:18] =>   (3-1)*6  3*6#   ..................# 获取所有的数据all=Book.objects.all()# 数据分页books=all[(page-1)*per_page:page*per_page]# 总个数count=Book.objects.count()# 总页数total_page=math.ceil(count/per_page)#数据范围 1,2,3,4..list_page=range(1,total_page+1)return render(request=request, template_name='show.html', context={'books':books,'listpages':list_page})

 2、show.html页面 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style type="text/css">#ul li {width: 30%;list-style: none;padding: 10px 0px;border: 1px solid cadetblue;}#pp li {display: inline;}.ff{font-weight: bolder;}</style>
</head>
<body>
<div><h1>手动分页图书数据</h1><ul id="ul"><li class="ff">编号----书名------价格------日期-------出版社编号</li>{% for bk in books %}<li>{{ bk.id }} -- {{ bk.title }} -- {{ bk.price}}-- {{ bk.pub_date| date:"Y-m-d" }}-- {{ bk.publish_id}}</li>{% endfor %}</ul><div><ul id="pp">{% for pa in listpages %}<li><a href="{% url 'pages' pa %}"><button>第{{ pa }}页</button></a></li>{% endfor %}</ul></div>
</div>
</body>
</html>

  3、运行效果 

 

  (2) 自动分页 

    源码:Paginator类

     1、函数视图

#自动分页
def auto_pageinfo(request,page=1):# 每页显示6条数据per_page = 6# 获取所有的数据all=Book.objects.all()#使用分页器分页from django.core.paginator import Paginatorpaginator=Paginator(all,per_page)#获取第几页的数据books=paginator.page(page)# 页码范围#数据范围 1,2,3,4..list_page=paginator.page_rangereturn render(request=request, template_name='autoshow.html', context={'books':books,'listpages':list_page})

    2、aushow.html页面 


<div><h1>自动分页图书数据</h1><ul id="ul"><li class="ff">编号----书名------价格------日期-------出版社编号</li>{% for bk in books %}<li>{{ bk.id }} -- {{ bk.title }} -- {{ bk.price}}-- {{ bk.pub_date| date:"Y-m-d" }}-- {{ bk.publish_id}}</li>{% endfor %}</ul><div><ul id="pp">{% for pa in listpages %}<li><a href="{% url 'pages2' pa %}"><button>第{{ pa }}页</button></a></li>{% endfor %}</ul></div>
</div>

3、配置url路径

from django.urls import pathfrom books import viewsurlpatterns = [path('pages/<int:page>', views.get_pageinfo,name='pages'),  #别名pagespath('pages2/<int:page>', views.auto_pageinfo,name='pages2'),  #别名pages2path('pages3/', views.auto_pageinfo2,name='pages3'),  #别名pages3]

4、运行效果

五、使用分页插件Django-pure-pagination

1、安装

pip install django-pure-pagination

2、在settings.py中注册

INSTALLED_APPS = [.....,'pure_pagination',
]

3、在settings.py中配置分页切割方式

# 分页配置
PAGINATION_SETTINGS = {'PAGE_RANGE_DISPLAYED':2, # 当前页相邻显示几个号码页'MARGIN_PAGES_DISPLAYED': 1,  # 首尾各显示几个号码页'SHOW_FIRST_PAGE_WHEN_INVALID': True,
}

4、函数视图

#分页插件
def auto_pageinfo2(request,page=1):# 每页显示5条数据per_page =3# 获取所有的数据all=Book.objects.all()#使用分页器分页from django.core.paginator import Paginatorpaginator=Paginator(all,per_page)try:page_number = request.GET.get('page', page)except PageNotAnInteger:page_number = 1#获取第几页的数据books=paginator.page(page_number)# 页码范围# 数据范围 1,2,3,4..list_page = paginator.page_range# books.paginator.pagesreturn render(request, 'list.html', {'page_obj': books,"pages":list_page})

5、模板

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style type="text/css">#ul li {width: 30%;list-style: none;padding: 10px 0px;border: 1px solid cadetblue;}a {padding: 5px 10px;color: white;background-color: darkgray;margin: 1px; /*设置标签 a 之间的间隔*/text-decoration: none; /*去除页码数字下面的下划线*/}a:hover {color: black;background: cyan;}.current {color: black;}</style>
</head>
<body>
<div><h1>插件分页图书数据</h1><ul id="ul"><li class="ff">编号----书名------价格------日期-------出版社编号</li>{% for bk in page_obj %}<li>{{ bk.id }} -- {{ bk.title }}-- {{ bk.price }}-- {{ bk.pub_date| date:"Y-m-d" }}-- {{ bk.publish_id }}</li>{% endfor %}</ul>
</div>{#Django-pure-pagination基础渲染方法#}
{#<div id="pagination">#}
{#    {{ page_obj.render }}#}
{#</div>#}<div class="pagination"><span class="step-links">{% if page_obj.has_previous %}<a href="?page={{ page_obj.previous_page_number }}"> << </a>{% else %}<a href=""> << </a>{% endif %}<span class="current">
{#            Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.#}{% for page in pages %}{% if page %}{% if page == page_obj.number %}<a href="?page={{ page }}"><span class="current">{{ page }}</span></a>{% else %}<a href="?page={{ page }}" class="page">{{ page }}</a>{% endif %}{% else %}<a href="">...</a>{% endif %}{% endfor %}</span>{% if page_obj.has_next %}<a href="?page={{ page_obj.next_page_number }}"> >> </a>{% else %}<a href=""> >> </a>{% endif %}</span>
</div></body>
</html>

6、运行效果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/213615.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android系统启动过程-uBoot+Kernel+Android

摘要&#xff1a;本文是参考大量网上资源在结合自己查看源代码总结出来的&#xff0c;让自己同时也让大家加深对Android系统启动过程有一个更加深入的了解&#xff01;再次强调&#xff0c;本文的大多数功劳应归功于那些原创者们&#xff0c;同时一些必要的参考链接我会一一附上…

【机器学习实训项目】黑色星期五画像分析

目录 前言 一、项目概述 1.1 项目简介 1.2 项目背景 1.3 项目目标 二、数据分析 2.1 导入库 2.2 数据基本信息 三、画像分析 3.1 画像1&#xff1a;消费金额Top10 3.2 画像2&#xff1a;高频消费Top10 3.3 画像3&#xff1a;人均消费金额Top10 3.4 画像4&#xff1a;男女消费对…

创投课程第四期 | Web3一级市场投资框架的演变及投资人能力框架的构成

协会邀请了来自Zonff Partners的合伙人——Colin&#xff0c;作为VC创投课程第4期的嘉宾&#xff0c;在北京时间12月9日(周六)下午14:00 PM-15:00 PM于蚂蚁链科技产业创新中心进行线下分享&#xff0c;届时将与所有对Web3投资、创业心怀热忱的朋友们共同探讨《WEB3一级市场投资…

双向链表(数据结构与算法)

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1…

程序启动时访问了未初始化的类指针引发内存访问违例导致程序崩溃的问题排查

目录 1、问题说明 2、使用Windbg动态调试去初步分析 3、使用Windbg详细分析 4、最后 VC常用功能开发汇总&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&#xff09;https://blog.csdn.net/chenlycly/article/details/124272585C软件异常排查从入门…

20、XSS——XSS跨站脚本

文章目录 一、XSS漏洞概述1.1 XSS简介 二、XSS漏洞分类2.1 反射型XSS2.2 存储型XSS2.3 DOM型XSS 三、XSS payload构造以及变形3.1 XSS payload构造3.2 XSS payload 变形 一、XSS漏洞概述 1.1 XSS简介 XSS被称为跨站脚本攻击&#xff08;Cross-site scripting&#xff09;&…

k8s volumes and data

Overview 传统上&#xff0c;容器引擎(Container Engine)不提供比容器寿命更长的存储。由于容器被认为是瞬态(transient)的&#xff0c;这可能会导致数据丢失或复杂的外部存储选项。Kubernetes卷共享 Pod 生命周期&#xff0c;而不是其中的容器。如果容器终止&#xff0c;数据…

排序的简单理解(上)

1. 排序的概念及引用 1.1 排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作&#xff08;按照我们的需求能够有序的将数据信息排列起来&#xff09;。 稳定性&#xff1a;假…

TeeChart.NET 2023.11.17 Crack

.NET 的 TeeChart 图表控件提供了一个出色的通用组件套件&#xff0c;可满足无数的图表需求&#xff0c;也针对重要的垂直领域&#xff0c;例如金融、科学和统计领域。 数据可视化 数十种完全可定制的交互式图表类型、地图和仪表指示器&#xff0c;以及完整的功能集&#xff0c…

医疗设备智慧管理助力医院提质增效,阿基米德amp;健康界实践分享

近日&#xff0c;苏州阿基米德网络科技有限公司与医疗领域头部级媒体健康界&#xff0c;联合举办“数智为擎 提质增效——医学装备智慧管理创新发展论坛”的直播活动。 直播现场&#xff0c;来自上海交通大学医学院附属同仁医院、中华医学会航海医学分会、苏州阿基米德的专家们…

统信UOS_麒麟KYLINOS上使用命令行配置NTP服务器

原文链接&#xff1a;统信UOS/麒麟KYLINOS上使用命令行配置NTP hello&#xff0c;大家好啊&#xff0c;今天我要给大家介绍的是在统信UOS/麒麟KYLINOS操作系统上使用命令行配置NTP&#xff08;Network Time Protocol&#xff09;服务器的方法。在内网环境下&#xff0c;许多企业…

13、C++异常处理

13、c异常处理 抛出异常捕获异常未抛出异常时的流程抛出异常时的流程捕获异常匹配顺序异常说明异常处理构造函数中的异常析构函数中的异常标准库异常类 抛出异常 throw 异常对象可以抛出基本类型的对象&#xff0c;如:throw -1;throw "内存分配失败!";也可以抛出类类…

FreeSSL申请免费域名证书

本文详细讲解如何申请免费证书&#xff0c;需要先准备好域名&#xff0c;将服务器IP和域名绑定。 1、注册FreeSSL账号 网址&#xff1a; https://freessl.org/ 2、申请流程 登录后首页输入域名&#xff0c;然后点击Create certificate&#xff0c;跳转到证书申请页面。 或者…

Pytorch深度强化学习1-6:详解时序差分强化学习(SARSA、Q-Learning算法)

目录 0 专栏介绍1 时序差分强化学习2 策略评估原理3 策略改进原理3.1 SARSA算法3.2 Q-Learning算法 0 专栏介绍 本专栏重点介绍强化学习技术的数学原理&#xff0c;并且采用Pytorch框架对常见的强化学习算法、案例进行实现&#xff0c;帮助读者理解并快速上手开发。同时&#…

QGIS 加载在线XYZ地图图层

QGIS 加载在线XYZ地图图层 定义并添加必应XYZ图层 Go to Layer > Add Layer > Add XYZ Layer…Click NewName as BingMaps(as you wish)URL as http://ecn.t3.tiles.virtualearth.net/tiles/a{q}.jpeg?g1click OkSelect XYZ Connections as Bing Maps(Which you creat…

PR自动剪辑视频工具AI智能剪辑插件AutoPod

推荐一款可以提高剪辑效率&#xff0c;节约时间成本的AI人工智能自动剪辑视频制作工具pr插件Autopod&#xff0c;辅助你更快地完成视频内容的编辑工作。 Autopod 插件是一款应用于 Adobe Premiere Pro 软件的插件&#xff0c;用于自动剪辑。该插件能够识别和处理视频和音频素材…

飞天使-linux操作的一些技巧与知识点4

文章目录 ansible配置文件的优先级尝试开始进行操作ansible常用模块ansible 的playbook示例安装phpplaybook中变量的引用 ansible yum install -y ansible 测试是否可用 ansible localhost -m ping /etc/ansible/ansible.cfg &#xff1a;主配置文件&#xff0c;配置 ansible…

大公司求我用Kotlin写个通用爬虫模板

bug虐我千百遍&#xff0c;我待他如初恋。每次深夜挑灯都是我与bug较量的时间。今天我要说的就是写一个爬虫模版&#xff0c;自动抓取百度图片的教程&#xff0c;这次使用Kotlin编写的爬虫程序在Scrapy框架下完成的&#xff0c;如有不足欢迎指正。 首先&#xff0c;使用Kotlin编…

angular form 组件、双向绑定;反应式表单

1.使用双向绑定&#xff0c;以及angular的表单提交功能 app.moudle中引入 双向绑定 [(ngModel)]"text" ​​​​​​​ 效果 提交表单 2.反应式表单 在app.module.ts中引入在组件中引入&#xff0c;并放在一个变量里 在初始化时实列化这个module 定义规则 在html…

Linux:环境变量

目录 1.基本变量 2.通过代码获取环境变量 2.1 main传参 2.2 全局变量environ 2.3 系统调用getenv() 3.在脚本文件中添加环境变量 4.环境变量通常是具有全局属性 1.基本变量 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数…