python/Djangof分页与自定义分页

Django分页

    ##============================================分页=======================================================
# current_pagc = request.GET.get('page')
# from django.core.paginator import Paginator,Page
# # result = models.UserInfo.objects.all().count()
# result = models.UserInfo.objects.all()
# paginator=Paginator(result,10)
# try:
# posts=paginator.page(current_pagc)
# except Exception as c:
# posts = paginator.page(1)
# return render(request,'geting.html',{'posts':posts})
     ##============================================django自定义分页不能对页数进行限定============================

 # class PageInfo(object):
#
# def __init__(self,current_page,per_page,all_count,show_page=11):
# try:
# self.current_page = int(current_page)
# except Exception as e:
# self.current_page=1
# self.per_page=per_page
# self.all_count=all_count
# a,b =divmod(all_count,per_page)
# if b:
# a = a+1
# self.all_pager = a
# self.show_page=show_page
#
# def start(self):
# return (self.current_page -1)* self.per_page
#
# def end(self):
# return self.current_page * self.per_page
#
# def pager(self):
# # v='<a href="/custom.html?page=1">1</a>'
# # return v
# page_list=[]
# half=(self.show_page-1)/2
# begin=self.current_page - half
# stop=self.current_page +half +1
# for i in range(int(begin),int(stop)):
# if self.current_page == i:
# temp="<a style='display:inline-block;padding:5px;margin:5px;background-color:red' href='/custom.html?page=%s'>%s</a>"%(i,i,)
# else:
# temp = "<a style='display:inline-block;padding:5px;margin:5px;' href='/custom.html?page=%s'>%s</a>" % (
# i, i,)
# page_list.append(temp)
#
# return ''.join(page_list)
# def custom(request):
# #表示用户当前想要访问的页码
# all_count = models.UserInfo.objects.all().count()
# #每页显示的个数
# page_info=PageInfo(request.GET.get('page'),10,all_count)
# user_list = models.UserInfo.objects.all()[page_info.start():page_info.end()]
# return render(request,'custom.html',{'user_list':user_list,'page_info':page_info})

自定义Django分页

 from django.core.paginator import Paginator,Page
class PageInfo(object): def __init__(self,current_page,per_page,all_count,show_page=11):
##类的变量参数
try:
#捕捉异常
self.current_page = int(current_page)
#如果能正常转换成整型就赋值给self.current_page
except Exception as e:
#不能正常转换成整型就赋值成数字1
self.current_page=1
#设置多少条数据分为一个一页
self.per_page=per_page
#获取数据库中所有的数据能分为多少页
self.all_count=all_count
#进行分页计算(数据库总数/多少天数据进行分页)能除开等到结果就像是(12,0)把12赋值给a,把0赋值给b
a,b =divmod(all_count,per_page)
#如果b为真
if b:
#a 等于a+1
a = a+1
#求出总共要分的页数赋值给self.all_pager
self.all_pager = a
#把传入的show_page值赋值给self.show_page
self.show_page=show_page def start(self):
#定义函数 设定起始位
return (self.current_page -1)* self.per_page
#返回当前页数减1 乘每页多少数据
def end(self):
# 定义函数 设定停止位
return self.current_page * self.per_page
# 返回当前页数减乘每页多少数据
def pager(self):
#定义函数
# v='<a href="/custom.html?page=1">1</a>'
# return v
page_list=[]
#创建列表
half=(self.show_page-1)/2
#获取页码的中间值
if self.all_pager < self.show_page:
#如果数据库的数小于设定的页码数
begin=1
#起始位设定为1
stop=self.all_pager+1
#停止为设定为数据库的数加上1(因为切片是顾头不顾尾)
else:
#否则
if self.current_page <= half:
#如果当前页码小于等于页码中间值
begin=1
#起始位设定为1
stop=self.show_page+1
#停止位设定为页码数加1(因为切片是顾头不顾尾)
else:
#否则
if self.current_page + half > self.all_pager:
#如果当前页码加上中间的页码大于数据库的总页码数
begin=self.all_pager-10
#起始值设定为数据库总数减10
stop=self.all_pager+1
#停止值设定为数据库总数加1(因为切片是顾头不顾尾)
else:
#否则
begin=self.current_page-half
#起始位设定为当前页码减中间页码
stop=self.current_page+half+1
#停止位设定为当前页码加中间页码加1(因为切片是顾头不顾尾)
if self.current_page==self.all_pager:
up = "<li><a href='#'>下一页</a></li>"
else:
up = "<li><a href='/custom.html?page=%s'>下一页</a></li>" % (self.current_page+1)
page_list.append(up)
for i in range(int(begin),int(stop)):
#进行循环范围是(起始位,停止位)
if self.current_page == i:
#如果当前页码等于循环的i时
temp="<li class='active'><a href='/custom.html?page=%s'>%s</a></li>"%(i,i,)
#自定义一个a标签设置简单样式 并添加背景颜色作为当前页码标识
else:
#否则
temp = "<li><a href='/custom.html?page=%s'>%s</a></li>" % (
i, i,)
#自定义一个a标签设置简单样式
page_list.append(temp)
#把每循环的a标签都添加到page_list列表中
if self.current_page==1:
nex = "<li><a href='#'>上一页</a></li>"
else:
nex = "<li><a href='/custom.html?page=%s'>上一页</a></li>" % (self.current_page-1)
page_list.append(nex)
return ''.join(page_list)
#把列摆中的内容进行拼接(因为返回的是字符串)
# def custom(request):
# #从数据库中获取所有数据
# all_count = models.UserInfo.objects.all().count()
# #实例化一个对象并进行传值
# page_info=PageInfo(request.GET.get('page'),10,all_count)
# #从数据库中获取数据设置起始和结束位置
# user_list = models.UserInfo.objects.all()[page_info.start():page_info.end()]
# #返回到HTML标签中并传入参数
# return render(request,'custom.html',{'user_list':user_list,'page_info':page_info}) ##==================================================总结=================================================================
'''
1.获取到数据中最大的页码数
2.设定一页显示多少数据
3.在用数据库总数除以要显示的内容数量(如果余数不等于零需要多添加一页)
4.设定一页中显示多少页码按钮
5.获取一页页码中中间的页码数
6.判断数据库的页码是不是小于设定一页中显示页码按钮的数(如果小于就重写停止值,不小于就往下判断)
7.判断当前页码数小于等于设定页码的中间值(重写起始值为1)
8.当前页码值不小于等于页码的中间值(重写起始值为中间值-5,结束值+6,因为切片是顾头不顾尾)
9.判断当前页码加上中间页码数是不是大于数据库总数(大于重写起始值为数据库总数-10,结束值为数据库总数+1,因为切片是顾头不顾尾)
10.通过python向HTML页面中传一个函数名,在HTML中函数名.方法执行(不能加括号执行)
11.|safe 表明是安全参数可以正常渲染
12.判断当前页码数是不是等于1(如果等于1不执行上一步按钮)
13.判断当前页码数是不是等于数据库总数(如果等于不执行下一步按钮)
'''

python/Djangof分页与自定义分页的更多相关文章

  1. MVC下分页的自定义分页一种实现

    1.引言 在MVC开发中我们经常会对数据进行分页的展示.通过分页我们可以从服务端获取指定的数据来进行展示.这样既节约了数据库查询的时间也节约了网络传输的数据量.在MVC开发中使用的比较多的应该是MVC ...

  2. Djang内置分页和自定义分页

    内置分页 views from django.core.paginator import Paginator,Page,PageNotAnInteger def DJs_pages(request): ...

  3. Django 分页 以及自定义分页

    Django提供了一个新的类来帮助你管理分页数据,这个类存放在django/core/paginator.py.它可以接收列表.元组或其它可迭代的对象. 基本语法 1 2 3 4 5 6 7 8 9 ...

  4. Python之路Day21-自定义分页和cookie

    本节知识点概要 1.URL 2.views - 请求其他信息 - 装饰器 3.Templates - 母版 - 自定义 4.Models操作 5.分页(自定义分页) 6.cookie 7.sessio ...

  5. Django - Cookie、Session、自定义分页和Django分页器

    2. 今日内容 https://www.cnblogs.com/liwenzhou/p/8343243.html 1. Cookie和Session 1. Cookie 服务端: 1. 生成字符串 2 ...

  6. Django—自定义分页

    分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应该显示在页面上的数据在数据库表中的起始位置. 确定分页需求: 1. 每页显示的数据条数 2. 每页显示页号链接数 3. 上一页 ...

  7. Python之路【第十九篇】自定义分页实现(模块化)

    自定义分页 1.目的&环境准备 目的把分页写成一个模块的方式然后在需要分页的地方直接调用模块就行了. 环境准备Django中生成一个APP并且注册,配置URL&Views 配置URL ...

  8. python 学习笔记十八 django深入学习三 分页,自定义标签,权限机制

    django  Pagination(分页) django 自带的分页功能非常强大,我们来看一个简单的练习示例: #导入Paginator>>> from django.core.p ...

  9. Python自定义分页组件

    为了防止XSS即跨站脚本攻击,需要加上 safe # 路由 from django.conf.urls import url from django.contrib import admin from ...

随机推荐

  1. 智能合约语言 Solidity 教程系列7 - 以太单位及时间单位

    这是Solidity教程系列文章第7篇介绍以太单位及时间单位,系列带你全面深入理解Solidity语言. 写在前面 Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所 ...

  2. JS基础三

    1.delete删除对对象的属性和方法的定义.强制解除对它的引用,将其设置为 undefined delete 运算符不能删除开发者未定义的属性和方法. 2.void 运算符对任何值返回 undefi ...

  3. Spring Cloud Consul 实现服务注册和发现

    Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具,它为基于 JVM 的云应用开发中涉及的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布 ...

  4. 小程序实现非swiper组件的自定义伪3D轮播图

    效果如下: 我用了很笨的方法实现的,大致就是: 1.当前点击的div(view)如果前后都有内容,那么,当前div(view)就设置到中间,前一个就设置到左边,前一个的前面所有全部设置到最左边,后面一 ...

  5. Dynamics 365 for CRM:CRM与ADFS安装到同一台服务器,需修改ADFS服务端口号

    CRM与ADFS安装到同一台服务器时,出现PluginRegistrationTool 及 CRM Outlook Client连接不上,需要修改ADFS的服务端口号,由默认的808修改为809: P ...

  6. 鹅厂优文 | 怎样用AI运维

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由 织云平台团队 团队发布在腾讯云+社区 诞生背景 最近这些年,运维行业提出了不少概念,各种各样的"XX运维"可以说 ...

  7. Python-turtle库知识小结(python绘图工具)

    turtle:海龟(海龟库) Turtle库是Python语言中一个很流行的绘制图像的函数库 使用之前需要导入库:import turtle • turtle.setup(width,height,s ...

  8. 使用linux下的crontab定时任务跑定时脚本

    使用linux下的crontab定时任务跑定时脚本 tags:定时任务 定时脚本 crontab linux定时脚本 linux 引言:应该有许多人曾经很好奇一些定时脚本是怎么做出来的.我们这次就来说 ...

  9. I Know Alpha冲刺随笔集

    Alpha冲刺 Day1 Alpha冲刺 Day2 Alpha冲刺 Day3 Alpha冲刺 Day4 Alpha冲刺 Day5 Alpha冲刺 Day6 Alpha冲刺 Day7 Alpha冲刺 D ...

  10. C语言博客作业--一二维数组

    一.PTA实验作业 题目1(7-6) (1).本题PTA提交列表 (2)设计思路 //天数n:数组下标i:小时数h,分钟数m:对应书号的标签数组flag[1001] //总阅读时间sum初始化为0,借 ...