python web框架中实现原生分页

作者:wxp_2001 时间:2021-05-15 12:25:42 

本文实例为大家分享了python web框架实现原生分页的具体代码,供大家参考,具体内容如下

原生分页器 示例   


#!/usr/bin/env python
# -*- coding:utf-8 -*-

class Pagination:

def __init__(self, p, all_count, pre=10, max_show=11):
'''
:param p: 当前页码
:param all_count: 数据总条数
:param pre: 每页数据量
:param max_show: 最多页码数
'''
try:
self.p = int(p) # 传进来的页码
if self.p <= 0:
self.p = 1
except Exception as e:
self.p = 1

# 总量
# all_count = all_count
# pre = per # 每页数据条数
total_num, more = divmod(all_count, pre)
if more:
total_num += 1 # total_num总数据页数

# 显示页码数
max_show = max_show
if total_num <= max_show: # 总数据量很小
page_start = 1
page_end = total_num
else:
if self.p - max_show // 2 <= 0: # 防止左边出现0页
page_start = 1
page_end = max_show

elif self.p + max_show // 2 >= total_num + 1: # 防止右边出现超出
page_end = total_num
page_start = page_end - max_show
else:
page_start = self.p - max_show // 2
page_end = self.p + max_show // 2

# 数据的起始结束
self.start = (self.p - 1) * pre
self.end = self.p * pre

# 页码
self.page_start = page_start
self.page_end = page_end
self.total_num = total_num

@property
def page_html(self):
li_list = []
for i in range(self.page_start, self.page_end + 1):
if i == self.p:
li_list.append('<li class="active"><a href="?p={}" >{}</a></li>'.format(i, i))
else:
li_list.append('<li><a href="?p={}" >{}</a></li>'.format(i, i))

# 添加页首 页尾

li_list.insert(0,
 '<li><a href="?p={}" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>'.format(
 self.p - 1))
li_list.append(
'<li><a href="?p={}" aria-label="Next"><span aria-hidden="true">&raquo;</span> </a></li>'.format(self.p + 1))

if self.p == 1:
li_list[0] = '<li class="disabled"><span aria-hidden="true">&laquo;</span></li>'
elif self.p == self.total_num:
li_list[-1] = '<li class="disabled"><span aria-hidden="true">&raquo;</span></li>'

pagehtml = ''.join(li_list)
return pagehtml

来源:https://blog.csdn.net/wuxingpu5/article/details/95089765

标签:python,web,分页
0
投稿

猜你喜欢

  • 解决Git推送错误non-fast-forward的方法

    2022-09-28 11:07:49
  • JavaScript使用focus()设置焦点失败的解决方法

    2024-05-02 16:28:15
  • 使用SqlServer CTE递归查询处理树、图和层次结构

    2024-01-16 07:35:42
  • php过滤器使用详解

    2023-06-13 01:52:23
  • 网页设计技巧:相对路径与绝对路径的区别问题

    2008-03-04 10:12:00
  • 使用Python快乐学数学Github万星神器Manim简介

    2022-07-03 04:28:00
  • 详解Python如何使用并发模型编程

    2021-10-30 06:39:23
  • JavaScript字符串对象toLowerCase方法入门实例(用于把字母转换为小写)

    2024-05-08 10:10:47
  • MySQL建立唯一索引实现插入重复自动更新

    2024-01-12 13:46:36
  • Java解析Excel文件并把数据存入数据库

    2024-01-22 10:42:26
  • Django 限制访问频率的思路详解

    2021-08-17 16:52:57
  • Pyinstaller打包Scrapy项目的实现步骤

    2022-05-01 18:07:02
  • Python实现自动化处理PDF文件的方法详解

    2024-01-02 07:02:21
  • thinkphp(php)插件钩子(hooks)分析的简单实现机制

    2023-05-25 09:27:58
  • Python人工智能之波士顿房价数据分析

    2021-09-23 19:43:35
  • pytorch中的squeeze函数、cat函数使用

    2022-03-27 14:32:24
  • node.js的事件机制

    2024-05-03 15:58:31
  • asp如何在读取Excel文件时创建列表的下拉菜单?

    2010-06-18 19:59:00
  • Ubuntu20.04安装Python3的虚拟环境教程详解

    2021-10-28 07:41:36
  • 基于PyQT5制作一个桌面摸鱼工具

    2021-02-06 17:57:21
  • asp之家 网络编程 m.aspxhome.com