python web框架中实现原生分页
作者:wxp_2001 发布时间:2021-05-15 12:25:42
标签:python,web,分页
本文实例为大家分享了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">«</span></a></li>'.format(
self.p - 1))
li_list.append(
'<li><a href="?p={}" aria-label="Next"><span aria-hidden="true">»</span> </a></li>'.format(self.p + 1))
if self.p == 1:
li_list[0] = '<li class="disabled"><span aria-hidden="true">«</span></li>'
elif self.p == self.total_num:
li_list[-1] = '<li class="disabled"><span aria-hidden="true">»</span></li>'
pagehtml = ''.join(li_list)
return pagehtml
来源:https://blog.csdn.net/wuxingpu5/article/details/95089765
0
投稿
猜你喜欢
- asp正则表达式检测字符串是否是数字及字母。<% '函数:CheckString(strng) '
- 假如您在安装SQL Server 2005时出现计数器错误,在搜索过所有的方法都不适用的情况下可以采用以下方法:将4个计数器删除:(如果没有
- JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript
- 前言本文根据安前松的视频分享整理而来,视频回放地址如下:www.bilibili.com/video/BV1Hr…一、
- 不管是用import还是用from mmmm import *的方式导入模块,当程序运行之后,回头在看那个存储着mmmm.py文件的目录中,
- 第一步一般是建立一个关键字替换表 如 id keyword url 等字段第二步是文章显示时把【文章】内容和【关键字替换表】对应的关键字替换
- 最近和一程序员合作项目。弄的我头都大了~埋怨我的CSS命名看不懂~得按照他的来。结果我打开他的页面,看了看,从头第一个开始就是content
- 一、将对象转为json字符串json.dumps:将 Python 对象编码成 JSON 字符串json.loads:将已编码的 JSON
- 主要用于对字符串的加密,最常用的为MD5加密:import hashlibdef get_md5(data): obj = ha
- 基于 Snapchat 的增强现实胡子挂件融合第一个项目中,我们将在检测到的脸上覆盖了一个小胡子。我们可以使用从摄像头捕获的连续视频帧,也可
- 一日,遇到一个问题,求上一个月的今天。 最开始我们使用 strtotime(”-1 month”) 函数求值,发现有一个问题,月长度不一样的
- 思路:使用socket传输文件过程中,如果单次传输每次只能发送一部分数据,如果针对大文件,一次传输肯定是不行的,所以需要我们在传输的时候提前
- 注意:我用的python2.7,大家如果用Python3.0以上的版本,请记得在print()函数哦!如果因为版本问题评论的,不做回复哦!!
- 如何避免磁盘临时表因为内存储引擎不支持TEXT和BLOB数据类型, 使用到BLOB和TEXT列的查询和使用隐式临时表的查询将不得不使用MyI
- 字典的键 字典中的值没有任何限制, 可以是任意Python对象,即从
- 最近做网站期间遇到个问题,就是用到比较流行的lightbox效果,就是点击链接后会弹出个固定大小窗口,弹出后窗口下面的内容是被遮罩掉的,最近
- DJANGO-ALLAUTH是github上面排名较高的django user系统.本来通过对比是想选用django-userea的,可是博
- 1. 线程的概念:线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程
- ORACLE EBS操作某一个FORM界面,或者后台数据库操作某一个表时发现一直出于"假死"状态,可能是该表被某一用户锁
- 今天老肥让我试试百度知道的新功能:插入地图。该功能需要登录才能操作,因此我意外的发现百度用户登录的弹出层变了。我很喜欢这个改进,利用TAB来