django有一个自带的分页,虽然功能很全面,但是不适合我应用的场景,所以自己写了一个代码 拿走不谢!

  发现了了bug 笔者正在修复 美化 修复好了在上传

  应用的场景 :

    1.最好是 django中使用

    2. 分页索要的数据 你必须给全

    3. 输出的是一个字典 和 一个分页的字符串类型代码

       

  效果图:

    使用的页码剧中飘红效果,就是后边的样式没有调好,我不专业,你自己调一下吧

  使用方法:

    拿到下面的组件,放到一个文件夹里面

views.py要引入一下

因为我的page

满足条件了之后,前端页面这么写组件返回的数据是样的,是一个字典,que是querryswt类型,new_html是一个分页组件 所以前端这么写就行了

 """
启动调用的函数是 my_html()
需要的参数是
param que: 一个querryset类型的数据
new_num_page: 要跳转的的页码
href:拼接路径 """
def html(new_lis,new_num_page,page_num,href):
"""
:param new_lis:
:param new_num_page:
:param page_num:
:param href: 传入的拼接路径比如 /custorm/?page=
:return:
"""
page_html = ""
page_pre_html = f'<nav aria-label="Page navigation"><ul class="pagination "><li><a href="{href}1" aria-label="Previous"><span aria-hidden="true">首页</span></a></li><li><a href="{href}{new_num_page - 1}" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>'
page_html += page_pre_html
for i in new_lis:
if i == str(new_num_page):
page_html += f'<li ><a href="{href}{i}" style="color:red" >{i}</a></li>'
else:
page_html += f'<li ><a href="{href}{i}" >{i}</a></li>' pagenum_html = f'<li><a href="{href}{new_num_page + 1}" aria-label="Next"><span aria-hidden="true" >&raquo;</span></a></li><li><a href="{href}{page_num}" aria-label="pattern"><span aria-hidden="true">尾页</span></a></li><li><span aria-hidden="true" ><form action="" method="get" ><input type="text" style="width:80px;height:18px;" placeholder="共:{page_num}页" name="page" ><input type="submit" style="width:80px;height:18px;" value="跳转"></form></li></ul></nav>'
page_html += pagenum_html
return page_html #收入数据,做成字典传出去
def my_html(que,new_num_page,href,page_max_piece=10,page_tag_num=5):# param que: 一个querry类型的数据new_num_page: 新的页码 href:拼接路径
"""
:param que: 一个querry类型的数据
:param new_num_page: 新的页码
href:拼接路径
:param page_max_piece: 页面显示的最大条数
:param page_tag_num: 页面显示的页码数 最好是奇数 轻易别改
:return: 返回一个字典 携带切片好的querry 和 一个 网页的html 直接返回前段就可以用了
"""
all_data_count = que.count()
page_num, resid = divmod(all_data_count, page_max_piece) # 商数和余数
if resid:
page_num += 1 # 拿到了总页数
page_all_lis = [str(i) for i in range(1, page_num + 1)]
if new_num_page in page_all_lis:
new_num_page = int(new_num_page)
if new_num_page > 2 and new_num_page < page_num - 1:
ret = html(page_all_lis[new_num_page-3:new_num_page+2],new_num_page,page_num,href)
elif new_num_page <= page_tag_num:
ret = html(page_all_lis[ 0:page_tag_num], new_num_page, page_num,href)
elif new_num_page > page_num-2:
ret = html(page_all_lis[page_num-page_tag_num:page_num],new_num_page,page_num,href)
return {"que": que[(new_num_page - 1) * page_max_piece:new_num_page * page_max_piece], "new_html": ret}
else:
new_num_page=1
ret = html(page_all_lis[0:page_tag_num], new_num_page, page_num,href)
return {"que": que[(new_num_page - 1) * page_max_piece:new_num_page * page_max_piece], "new_html": ret}

V关于分页的组件

  

    

    

django分页的写法,前端后端!的更多相关文章

  1. 原生的 django 分页

    原始的 django 分页 # 基本 写法 class Paginator(object): def __init__(self, object_list, per_page, orphans=0, ...

  2. django项目一 分页器(前端分页和后端分页区别)

    1. 客户信息展示 1. 母版和继承 {% extends 'layout'%} {% load static%} {% static '文件路径' %} block css js content 2 ...

  3. python基于django编写api+前端后端分离

    有用 https://segmentfault.com/a/1190000016049962#articleHeader2 python的前后端分离(一):django+原生js实现get请求 htt ...

  4. 13.Django基础之django分页

    一.Django的内置分页器(paginator) view from django.shortcuts import render,HttpResponse # Create your views ...

  5. Django框架(十四)—— Django分页组件

    目录 Django分页组件 一.分页器 二.分页器的使用 三.案例 1.模板层 2.视图层 Django分页组件 一.分页器 数据量大的话,可以分页获取,查看 例如:图书管理中,如果有成千上万本书,要 ...

  6. day 65 Django基础之django分页

      Django基础之django分页   一.Django的内置分页器(paginator) view from django.shortcuts import render,HttpRespons ...

  7. day 61 Django基础之django分页

      Django基础之django分页 一.Django的内置分页器(paginator) view   from django.shortcuts import render,HttpRespons ...

  8. Django之META与前后端交互

    Django之META与前后端交互 1 提交表单之GET 前端提交数据与发送 1)提交表单数据 2)提交JSON数据 后端的数据接收与响应 1)接收GET请求数据 2)接收POST请求数据 3)响应请 ...

  9. Django重定向的写法、与直接渲染的区别

    Django重定向的写法.与直接渲染的区别 return redirect (“login”)     #重定向到login页面,状态码是302页面重定向和直接渲染新的页面的区别.重定向实际是指向了另 ...

随机推荐

  1. CitusDB Multi-node Install and Test

    Multi-node setup on CentOS 参考官网:https://docs.citusdata.com/en/v6.2/installation/production_rhel.html ...

  2. while 循环,运算符,字符串的格式化练习

    1.判断下列逻辑语句的结果,一定要自己先分析 1)1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 Ture ...

  3. 字符串如何实现反转?python实现

    今天和一个同事出去吃饭,突然话风转变,考了问我一个问题,他说哥,你知道字符串怎么反转吗? 我想了想,我擦,回家看我博客.作为一个资深开发,怎么可能被一个毛头小子问住了! 于是,我今天就稍微的整理了一下 ...

  4. 洛谷P2384 最短路 题解

    题目简叙: 请你求出从1到n的最短路径,其中最短路径☞这条路经过的边的权值的乘积. 题目分析: 很显然,这也是一道经典的单元最短路问题,首先我们可以考虑使用Floyd,显然,这是一个比较无脑简单的最短 ...

  5. 支持微信页面右侧悬浮QQ在线客服

    使用方法: 1.将style里的css样式复制到你的样式表中 2.将body中的代码部分拷贝到你需要的地方即可 (js.图片采用绝对路径,不建议修改) <!DOCTYPE html PUBLIC ...

  6. 我对微服务、SpringCloud、k8s、Istio的一些杂想

    一.微服务与SOA “微服务”是一个名词,没有这个名词之前也有“微服务”,一个朗朗上口的名词能让大家产生一个认知共识,这对推动一个事务的发展挺重要的,不然你叫微服务他叫小服务的大家很难集中到一个点上. ...

  7. Set接口的使用

    Set集合里多个对象之间没有明显的顺序.具体详细方法请参考API文档(可见身边随时带上API文档有多重要),基本与Collection方法相同.只是行为不同(Set不允许包含重复元素). Set集合不 ...

  8. HTTP_3_HTTP报文

    用户HTTP协议交互的信息被称为HTTP报文 简单的请求报文和响应报文实例 HTTP传输过程中常用设置 提升传输速率 编码压缩传输 (常见压缩格式:gzip compress deflate ) 分块 ...

  9. 微信小程序的尺寸单位rpx介绍

    rpx单位是微信小程序中css的尺寸单位,rpx可以根据屏幕宽度进行自适应. 规定屏幕宽为750rpx.如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375 ...

  10. 角度转弧度&根据弧度计算圆周上点的坐标的方法

    角度转弧度: #define AngleToRadian(angle) (M_PI/180.0f)*angle 以正东面为0度起点计算指定角度所对应的圆周上的点的坐标: float radian = ...