Django笔记--python实现将分页功能封装成类

这篇笔记介绍了如何在Django中将分页功能封装成一个名为Pagination的类。类中包含了初始化方法,用于处理请求、总数据量、每页显示数量等参数,并能计算出总页数、当前页数及显示的页码范围。此外,还提供了返回HTML页面中分页链接的方法。在视图函数中,可以实例化该类并传入请求和数据总数,然后在HTML模板中使用显示分页链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Django笔记–python实现将分页功能封装成类

对于数据的表格形式呈现,庞大的数据量不可能全部放在一页中(除非数据很少)。所以基本上都需要用到分页功能。因此有必要将分页功能封装成一个类,方便使用。


pagination.py(将分页功能分装到Pagination类中)

from django.utils.safestring import mark_safe
from django.http import QueryDict
#分页器
class Pagination:
    def __init__(self,request,all_count,query_params=QueryDict(),per_num=10,max_show=11):  #接受一个request对象(request)与int类型的总数据量(all_count)
        '''
        base_url:路径
        all_count: 总数据量
        per_num: 每页的数据量(默认值为10)
        max_show: 每页显示的页码数(默认值为11)
        total_num:总页码数
        current_page:当前页码
        page_start:当前页面的第一个页码数
        page_end:当前页面的最后一个页码数
        query_params:url中的额外参数(这边指的是搜索条件)
        '''
        self.base_url = request.path_info #获取路径
        self.max_show = max_show          #获取每页显示页码数
        self.per_num = per_num            #获取每页的数据量
        self.all_count = all_count        #获取总数据量
        self.query_params = query_params  #url中额外的搜索参数
        half_show = max_show // 2
        self.total_num, more = divmod(all_count, per_num)  #通过总数据量除每页数据量来获取总页码数与剩余数据量
        try:  #异常处理,获取当前页码
            self.current_page = int(request.GET.get('page', 1))
            if self.current_page <= 0:
                self.current_page = 1
        except Exception as e:
            self.current_page = 1

        if more:   #如果剩余数据量不为0,则总页码数加1
            self.total_num += 1

        if self.total_num <= max_show:  
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值