python3实现分页封装类

python3实现分页封装类,第1张

将实现分页的代码封装好了 前端以Bootstarp为例

其他前端框架在getPagingHTML()中修改对应格式即可

'''
    用于实现分页的类
    ---------传入参数---------
    request:方法中得到的request对象
    queryset:从数据库筛选得到的所有数据的queryset集合
    page_size:每页的记录数 默认为10
    page_plus:显示的当前页码的前后页数 默认为5
    page_param:页码get传参的键名
    ---------内部参数---------
    self.page_param:页码键名
    self.page_now:当前页码
    self.page_size:每页多少条记录
    self.start:每页记录开始的序号
    self.end:每页记录结束的序号
    self.limit_set:当前页上应有的记录的queryset集合
    self.total_count:全部记录的个数
    self.total_page:全部页码的个数
    self.page_plus:分页选项中当前页码的前后页数
'''
import math,copy

class LimitPage(object):
    def __init__(self, request, queryset, page_size=10, page_plus=5, page_param='page'):
        self.page_param=page_param
        page=request.GET.get(self.page_param,'1')
        self.page_now=int(page) if page.isdecimal() else 1
        self.page_size=page_size
        self.start=(self.page_now - 1) * self.page_size
        self.total_count=queryset.count()
        self.end=self.page_now * self.page_size
        if self.end > self.total_count:
            self.end=self.total_count
        self.limit_set=queryset[self.start:self.end]
        self.total_page=math.ceil(self.total_count/self.page_size)
        self.page_plus=page_plus
        self.get_dict=copy.deepcopy(request.GET)

    # 当前页上应有的记录的queryset集合
    def getLimitSet(self):
        return self.limit_set

    # 获取将GET参数与page参数拼接后的URL参数字符串
    def getGETURL(self,page):
        self.get_dict._mutable=True
        self.get_dict.setlist(self.page_param,[page])
        return self.get_dict.urlencode()

    # 获取分页组件的HTML格式
    def getPagingHTML(self):
        paging_html = ''''''
        return paging_html

在使用时先将该类from xxx import xxx.py导入后实例化后传入参数即可

 值得一提的时getPagingHTML返回的是一个字符串

以Django为例子 要想让其在网页中以HTML形式渲染 只需要使用mark_safe()将其处理即可

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/725036.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-26
下一篇2022-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存