微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

django分页的写法,前端后端!

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

  

  应用的场景 :

    1.最好是 django中使用

  

  使用方法:

    要的数据是( quesset 类型的数据,要跳转页码,拼接的路径),返回字典 为什么返回一个字典?直接返回前端方便,适合我短期内使用,要是有其他需求你可以改一下

    要使用的地方:直接{{  load 引用  }}

       

  效果图:

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

分享图片

  

分享图片

 1 """
 2 启动调用函数是 my_html()
 3  需要的参数是 
 4  param que: 一个querryset类型的数据 
 5  new_num_page:  要跳转的的页码 
 6  href:拼接路径
 7 
 8 
 9 """
10 def html(new_lis,new_num_page,page_num,href):
11     """
12     :param new_lis:
13     :param new_num_page:
14     :param page_num:
15     :param href:  传入的拼接路径比如 /custorm/?page=
16     :return:
17     """
18     page_html = ""
19     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>
20     page_html += page_pre_html
21     for i in new_lis:
22         if i == str(new_num_page):
23             page_html += f<li ><a href="{href}{i}"  style="color:red"  >{i}</a></li>
24         else:
25             page_html += f<li ><a href="{href}{i}"  >{i}</a></li>
26 
27     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>
28     page_html += pagenum_html
29     return page_html
30 
31 #收入数据,做成字典传出去
32 def my_html(que,href,page_max_piece=10,page_tag_num=5):# param que: 一个querry类型的数据new_num_page:  新的页码 href:拼接路径
33     """
34     :param que: 一个querry类型的数据
35     :param new_num_page:  新的页码
36     href:拼接路径
37     :param page_max_piece: 页面显示的最大条数
38     :param page_tag_num: 页面显示页码数 最好是奇数 轻易别改
39     :return:  返回一个字典 携带切片好的querry 和 一个 网页的html 直接返回前段就可以用了
40     """
41     all_data_count = que.count()
42     page_num,resid = divmod(all_data_count,page_max_piece)  # 商数和余数
43     if resid:
44         page_num += 1  # 拿到了总页数
45     page_all_lis = [str(i) for i in range(1,page_num + 1)]
46     if new_num_page in page_all_lis:
47         new_num_page = int(new_num_page)
48         if new_num_page > 2 and new_num_page < page_num - 1:
49             ret = html(page_all_lis[new_num_page-3:new_num_page+2],href)
50         elif new_num_page <= page_tag_num:
51             ret = html(page_all_lis[ 0:page_tag_num],href)
52         elif new_num_page > page_num-2:
53             ret = html(page_all_lis[page_num-page_tag_num:page_num],href)
54         return {"que": que[(new_num_page - 1) * page_max_piece:new_num_page * page_max_piece],"new_html": ret}
55     else:
56         new_num_page=1
57         ret = html(page_all_lis[0:page_tag_num],href)
58         return {"que": que[(new_num_page - 1) * page_max_piece:new_num_page * page_max_piece],"new_html": ret}
View Code

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐