首页 > 其他分享 >Django Paginatior分页,页码过多,动态返回页码,页码正常显示

Django Paginatior分页,页码过多,动态返回页码,页码正常显示

时间:2023-02-17 16:55:05浏览次数:47  
标签:paginator pageRange Django 当前 currentPage 页码 page Paginatior

问题:

当返回数据较多,如设置每页展示10条,数据接近200条,返回页码范围1~20,前端每个页码都显示的话,就会出现页码超出当前页面,被遮挡的页码无法操作和显示不美观;

代码优化:

在使用paginator转化为Page对象后,获取到num_pages:总的页码数,配合当前页码,进行判断

实现效果:

页面结合上下页和返回的pageRange,显示10个页码,并设置上下页,进行操作

 

代码实现:

动态返回页码逻辑:

如果当前页码-5,小于1,返回的页码范围: (1,11)

如果当前页码-5>1,且当前页码+5小于总页码,范围(当前页码-5,当前页码+5)

如果当前页码-5>1,且当前页码+5大于总页码,范围(当前页码-5,总的页码数+1)

views.py层代码

    def get(self, request):
        p_index = int(request.GET.get('page', 1))
        # 过滤状态等于0的数据
        list = TestBatch.objects.filter(~Q(status=0)).all()

        page_count = 10
        start = (p_index - 1) * page_count

        paginator = Paginator(list, page_count)

        currentPage = paginator.get_page(p_index).number

        data_p = paginator.page(p_index)

        # 页码超出12页时,前端显示页码会被遮挡,对页码进行处理,超出12时,返回指定规则的页码,上下页结合进行翻页
        if paginator.num_pages > 12:
            if currentPage - 5 < 1:
                pageRange = range(1, 11)
            elif currentPage + 5 > paginator.num_pages:
                pageRange = range(currentPage - 5, paginator.num_pages+1)
            else:
                pageRange = range(currentPage - 5, currentPage + 5)
        else:
            pageRange = paginator.page_range
        return render(request, 'page/batchList.html', {"batchs": data_p, "start": start, "currentPage": currentPage,"pageRange": pageRange})

配置html页面

标签:paginator,pageRange,Django,当前,currentPage,页码,page,Paginatior
From: https://www.cnblogs.com/cuitang/p/17130786.html

相关文章

  • [django]钩子函数的一些细节(clean)
    函数名说明:clean_后面跟着的是需要校验字段名称示例:classRelUserReset(forms.ModelForm):defclean_confirm_password(self):pass校验顺序说明:如果是继承的......
  • Django操作redis
    一、环境安装基本环境:Python环境:Python3.8.16Django环境:4.1redis环境:参考搭建https://www.cnblogs.com/yclh/p/14742336.html并且已经添加了myApp的应用 安装red......
  • Django操作mongo数据库二(MongoClient方式)
    一、基本环境1、开发环境:Python环境:Python3.8.16Django环境:4.12、需要安装的包pipinstallpymongopipinstallmongoengine二、开发参数配置1、先创建一个mongoA......
  • Django操作mongo数据库一(配置文件里写连接信息)
    一、基本环境1、开发环境:Python环境:Python3.8.16Django环境:4.12、需要安装的包pipinstallpymongopipinstallmongoengine  二、开发参数配置1、先创建一个......
  • Django项目创建(一)
    一、创建django项目1、pycharm工具创建这种方式django会是默认最新版本的 2、命令行创建(1)创建新的开发环境condacreate--namepython3.8testpython=3.8(2)激活开......
  • Django项目创建应用(二)
    四、创建应用一个项目里可以创建多个应用,每个应用进行一种业务处理(1)激活当前项目的环境D:\pythonProject2023\djangoProject>activatepython3.8forDjango (python3.......
  • 对服务器进行心跳检测 python django
    (由于春节期间连不上服务器,但又不知道是不是服务器关机了,因此写一个心跳检测功能遇到问题时可以排查部分原因)具体来说分为客户端和服务端,客户端为校园服务器,服务端为我们自......
  • django admin 字段设置
    来源:http://xieboke.net/article/100/djangoadmin后台里有些输入框长度、宽度、提示语等,可能不满足我们的需求,这个时候,我们就需要对admin的样式进行更改。还是先从d......
  • Python+Django(4):创建其他网页(模板继承)
    模板继承:1,修改主页父模板:抽取通用元素,在index.html同级目录下新建base.html<p><ahref="{%url'learning_logs:index'%}">LearningLog</a></p>{%blockcont......
  • Django——报错信息
    安装报错:报错信息:ValueError:nosignaturefoundforbuiltin<built-infunctionopenssl_md5>解决方法:这个上面写的是MD5错误,但不是这个样子,只是因为运行的配置......