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)