Python--day71--分页功能
分页功能代码:
from django.shortcuts import render # Create your views here. from app01 import models def books(request):
#从URL取参数
page_num = request.GET.get("page")
print(page_num,type(page_num))
# 每一页显示多少条数据
per_page = 10
# 总数据是多少
total_count = models.Book.objects.all().count()
# 总共需要多少页码来展示
total_page, m = divmod(total_count, per_page)
if m:
total_page += 1
try:
page_num = int(page_num)
# 如果输入的页码数超过了最大的页码数,默认返回最后一页的数据
if page_num > total_page:
page_num = total_page
except Exception as e:
#当输入的页码不是正经数字的时候,默认返回第一页的数据
page_num = 1 #定义两个变量保存数据从哪儿取到哪儿
data_start = (page_num-1)*10
data_end = page_num*10 #页面总共展示多少页码
max_page = 11
if total_page < max_page:
max_page = total_page half_max_page = max_page // 2
#页面上展示的页码从哪儿开始
page_start = page_num - half_max_page
#页面上展示的页码到哪儿结束
page_end = page_num + half_max_page
#如果当前页减一半,比1还小
if page_start <= 1:
page_start = 1
page_end = max_page #如果当前页加一半比总页码数还大
if page_end >= total_page:
page_end = total_page
page_start = total_page - max_page +1 all_book = models.Book.objects.all()[data_start:data_end] #自己拼接分页的HTML代码
html_str_list = []
#加上第一页
html_str_list.append('<li><a href="/books/?page=1">首页</a></li>')
#加上一个上一页的标签
#判断,如果是第一页就没有上一页了
if page_num <= 1:
html_str_list.append(' <li class="disabled"><a href="#" ><span aria-hidden="true">«</span></a><li>')
else:
#加上一个上一页的功能
html_str_list.append(' <li><a href="/books/?page={}" ><span aria-hidden="true">«</span></a><li>'.format(page_num-1)) for i in range(page_start,page_end +1):
#如果是当前页就加一个active样式类
# if i == page_num:
# tmp = '<li class="active"><a href="/books/?page={0}">{0}</a></li>'.format(i)
# else:
if i == page_num:
tmp = '<li class="active"><a href="/books/?page={0}">{0}</a></li>'.format(i)
else:
tmp = '<li><a href="/books/?page={0}">{0}</a></li>'.format(i) html_str_list.append(tmp) #加上一个下一页的标签
#判断,如果是最后一页,就没有下一页
if page_num >= total_page:
html_str_list.append('<li class="disabled"><a href="#" aria-label="Next"><span aria-hidden="true">»</span></a><li>')
else:
html_str_list.append('<li><a href="/books/?page={}" aria-label="Next"><span aria-hidden="true">»</span></a><li>'.format(page_num+1))
#加上最后一页
html_str_list.append('<li><a href="/books/?page={0}">末页</a></li>'.format(total_page)) page_html = "".join(html_str_list) return render(request,'books.html',{'books':all_book,"page_html":page_html})
Python--day71--分页功能的更多相关文章
- HTML 基于 Python 实现分页功能
前面的话: 1. 网页引用的bootstrap 中的表格,所以需要引入样式类 2. 第一次写文章,不喜勿喷.有不足的地方,可留言我改正,在此先谢过. HTML代码: <!DOCTYPE html ...
- python通用分页功能
实现: class Page: def __init__(self,current_page,data_count,per_page_count=10,pager_num=10): self.curr ...
- Python odoo中嵌入html简单的分页功能
在odoo中,通过iframe嵌入 html,页面数据则通过controllers获取,使用jinja2模板传值渲染 html页面分页内容,这里写了判断逻辑 <!-- 分页 -->< ...
- Django 实现分页功能(django 2.2.7 python 3.7.5 )
Django 自带名为 Paginator 的分页工具, 方便我们实现分页功能.本文就讲解如何使用 Paginator 实现分页功能. 一. Paginator Paginator 类的作用是将我们需 ...
- python_way day18 html-day4, Django路由,(正则匹配页码,包含自开发分页功能), 模板, Model(jDango-ORM) : SQLite,数据库时间字段插入的方法
python_way day18 html-day4 1.Django-路由系统 - 自开发分页功能 2.模板语言:之母板的使用 3.SQLite:model(jDango-ORM) 数据库时间字 ...
- Django 分页功能
Django 分页功能比较强大,这边是结合官网的内容写的可以参考 https://docs.djangoproject.com/en/1.9/topics/pagination/ 分页命令行练习案列 ...
- 分页功能实现之通过ajax实现表单内容刷新
拿代码来说话 我们的需求就是点击翻页功能,实现表格内容局部刷新且能够翻到对应的页面上,不明白? 那么就看看下面的图,需要达到的效果如下所示: 现在要实现的功能就是把红线框起来的表单内容 在点击翻页的时 ...
- Django之分页功能
Django提供了一个新的类来帮助你管理分页数据,这个类存放在django/core/paginator.py.它可以接收列表.元组或其它可迭代的对象. 基本语法 class Paginator(ob ...
- python2.0_day19_前端分页功能的实现
我们前面完成的客户纪录展示,只有4条,如果有上百条就不能在1页中全部展示了,那样是不人性化的.另外一次性取出来,数据量也比较大.假如现在有95条数据,我们想实现一个每页展示20条,那就分为5页.假如我 ...
- Django学习笔记(12)——分页功能
这一篇博客记录一下自己学习Django中分页功能的笔记.分页功能在每个网站都是必要的,当页面因需要展示的数据条目过多,导致无法全部显示,这时候就需要采用分页的形式进行展示. 分页在网站随处可见,下面展 ...
随机推荐
- Linux平台的SVN服务器的配置及搭建
https://jingyan.baidu.com/article/54b6b9c08b35382d593b477c.html 一.安装SVN 1 在Linux平台上,SVN的软件包名称是subv ...
- javascript里的eval总结
JavaScript eval() 函数 1.定义和用法 eval() 函数计算 JavaScript 字符串,并把它作为脚本代码来执行. 如果参数是一个表达式,eval() 函数将执行表达式.如果参 ...
- POJ 1845 (洛谷 :题目待添加)Sumdiv
约数和 题目描述 给出a和b求a^b的约数和. 输入格式: 一行两个数a,b. 输出格式: 一个数表示结果对 9901 的模. Input 2 3 Output 15 SB的思路: 这是一道典型的数论 ...
- Leetcode709.To Lower Case转换成小写字母
实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串. 示例 1: 输入: "Hello" 输出: & ...
- 洛谷P2051 中国象棋
题目描述 这次小可可想解决的难题和中国象棋有关,在一个N行M列的棋盘上,让你放若干个炮(可以是0个),使得没有一个炮可以攻击到另一个炮,请问有多少种放置方法.大家肯定很清楚,在中国象棋中炮的行走方式是 ...
- JavaScript--查看代码运行效率console.time()与console.timeEnd()用法
程序运行时间计算: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- CSS实现导航栏底部动态滚动条效果
预习了CSS3部分的新知识,想着在不使用JS的情况下实现导航栏滚动条效果,如下: 实现滚动条效果,其实就是在<li></li>标签中让<span>元素的宽度由0变化 ...
- JavaScript中常用的几种类型检测方法
javascript中类型检测方法有很多: typeof instanceof Object.prototype.toString constructor duck type 1.typeof 最常见 ...
- IP应用加速 – DCDN迈入全栈新篇章
4月11日,第七届"亚太内容分发大会"暨CDN峰会国际论坛中,阿里云资深技术专家姚伟斌发布了DCDN子产品IP应用加速(IPA).IPA是基于阿里云CDN本身的资源优化,对传输层( ...
- css字体大小单位
1:px: 这个应该是国内使用较多的单位,意思为像素.因此,其视觉的呈现效果是与分辨率相关的.例如在1024*768分辨率下看12px的字体就比960*640下看到的“小”,其实字体像素未改变,所以觉 ...