CRM_分页显示——第18天

前两页和最后两页和当前页的前后两页用数字显示,其他的用....显示

page_num<3 #判断前两页

page_num>query_sets.paginator.num_pages-2 #判断最后两页

abs(query_sets.number-page_num)<=2  #判断当前页的前后两页

区别num_pages和page_range,再判断最后两页的时候我就是使用page_range去比较导致报错range和int是不能比较的:

num_pages  #总页数

page_range  #页 数的范围

number  #当前页

 

判断....显示的时候时,为了防止其他满足条件但是数字和...也没有显示,使用一个标志added_bot_ele=False,当进入这个判断时把他置为true

        else:
            if not added_bot_ele:
                page_ele+='''<li><a>....</a><li>'''
                added_bot_ele =True

这个分页的完整代码如下:

@register.simple_tag
def build_paginator(query_sets,filter_condtions):
    #"""页面分页中间会是....显示"""
    """
    :param query_sets: 页面值的对象
    :param filter_condtions: 请求数据的dict
    :return: 返回分页
    """
    sel_ele = ""
    page_ele = ""
    for k ,v in filter_condtions.items():
        sel_ele+="&{0}={1}".format(k,v)
    added_bot_ele = False
    for page_num in query_sets.paginator.page_range:
        #print("page_num",page_num)
        #前量页和最后两页和当前页的前后两页显示,其他的用....显示
        if page_num<3 or page_num>query_sets.paginator.num_pages-2 or abs(query_sets.number-page_num)<=2:
            ele_class =""
            added_bot_ele = False
            if page_num == query_sets.number:
                ele_class ="active"
            page_ele+='''<li class="%s"><a href="?page=%s%s">%s</a></li>'''%(ele_class,page_num,sel_ele,page_num)

        else:
            if not added_bot_ele:
                page_ele+='''<li><a>....</a><li>'''
                added_bot_ele =True

    return mark_safe(page_ele)

 

转载于:https://www.cnblogs.com/venvive/p/11318677.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值