关于python在Django中分页的实现

import math
#每页有pn_num个对象 每个页面显示index_number个页索引 当前pn页 obj要查询的模型类
def pages(pn_num,index_number, pn,obj):
    # 最大页数sum_page  最小页数1页 每页有pn_num个对象 目前是pn页
    pn = int(pn)

    goods_number = obj.objects.all().count()
    sum_page = math.ceil(goods_number / pn_num)
    if not sum_page:
        sum_page = 1

    # 每页要显示的对象集合pn_obj
    start_obj = (pn - 1) * pn_num
    end_obj = pn * pn_num
    pn_obj = obj.objects.all()[start_obj:end_obj]

    # 要显示的页码范围p_range 每个页面显示index_number个页索引

    p_range = range(1, sum_page + 1)
    if pn < math.ceil(index_number / 2):
        p_range = p_range[:index_number]
    elif pn > sum_page - math.floor(index_number / 2):
        p_range = p_range[-index_number:]
    else:
        p_range = p_range[pn - 1 - math.floor(index_number / 2): pn + math.floor(index_number / 2)]
    p_next=pn+1
    if p_next>sum_page:
        p_next=sum_page
    p_pre=pn-1
    if p_pre<1:
        p_pre=1
    data={
        'pn':pn,                  #当前页码
        'max_page':sum_page,      #最大页码
        'pn_num':pn_num,          #每页要显示的数据个数
        'pn_obj':pn_obj,          #每页要显示的数据对象集合
        'p_range':p_range,        #当前页面的索引范围如[5,6,7,8]
        'p_index':index_number,     #显示几个索引页
        'p_next':p_next,          #下一页的页码
        'p_pre':p_pre,          #上一页的页码
    }
    return data
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值