请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

分页缺少当页数过多时的展示问题处理

正在回答

2回答

你好

非常好,终于有人观察到这个的。我给你一个建议

你可以根据当前展示页面,往后展示几页,往前展示几页

例如 当前页面是 p ,p-5  p +5 

这样最多就展示11个数字

0 回复 有任何疑惑可以回复我~
  • 提问者 幕布斯2528189 #1
    按照老师的建议做了下优化,在index.py中page_params增加了'page_show_num': 10,设置页码的展示个数,此处为展示10个页码:
        page_params = {
            'total_count': query.count(),
            'page_size': 30,
            'page_show_num': 10,
            'page': page,
            'url': "/?"
        }
    
    然后在Hepler.py增加了如下代码:
    
    page_show_num = int(params['page_show_num'])
    half_show_num = math.floor((page_show_num +1) / 2)
    
    # 计算页码展示的数量
        start_num = 1
        end_num = total_pages
        if page_show_num < total_pages:
            if page > half_show_num:
                start_num = page - (half_show_num-1) if page + (half_show_num-1) < total_pages else total_pages - (half_show_num-1)*2
                end_num = page + (half_show_num-1) if page + (half_show_num-1) < total_pages else total_pages
            else:
                end_num = page_show_num
    
        range_page = range(start_num, end_num + 1)
    
        is_prev = 0 if page <= 1 else 1
        is_next = 0 if page >= total_pages else 1
        pages = {
            'current': page,
            'total_pages': total_pages,
            'total': total_count,
            'page_size': page_size,
            'is_next': is_next,
            'is_prev': is_prev,
            'range': range_page,
            'url': params['url']
        }
    回复 有任何疑惑可以回复我~ 2020-05-09 17:00:37
  • 提问者 幕布斯2528189 #2
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-05-09 17:07:54
提问者 幕布斯2528189 2020-05-09 17:07:31

贴出实现页码过长的优化,有更好方法欢迎交流:

https://img1.sycdn.imooc.com//szimg/5eb67294095a2e6e17150866.jpg

https://img1.sycdn.imooc.com/szimg/5eb67294094e8e8c10330764.jpg

https://img1.sycdn.imooc.com//szimg/5eb672940979cb5817180775.jpg


1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信