【Django】列表数据Paginatior分页,动态返回页码,显示当前页、总页数、跳转页

这篇具有很好参考价值的文章主要介绍了【Django】列表数据Paginatior分页,动态返回页码,显示当前页、总页数、跳转页。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题

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

解决

在使用paginator转化为Page对象后,获取到num_pages:总的页码数,配合当前页码,进行判断
显示列表的所在页码,总分页数,实现跳转不在动态页面的页数

效果

【Django】列表数据Paginatior分页,动态返回页码,显示当前页、总页数、跳转页,django,python,后端

实现

views.py

def api_list(request):
    p_index = int(request.GET.get('page', 1))  # 当前页码
    api_list = API_Manage().get_all_api_list()  # 查询的数据

    page_size = 10  # 每页大小

    # 设置每页10条数据,paginator
    paginator = Paginator(api_list, per_page=page_size)
    # 当前页码
    current_page = paginator.get_page(p_index).number
    # 页面数据
    page = paginator.page(p_index)
    # 页码超过12页,进行动态返回页码范围
    if paginator.num_pages > 12:
        if current_page - 5 < 1:  # 当前页小于5
            page_range = range(1, 11)
        elif current_page + 5 > paginator.num_pages:  # 当前页+5大于总页码
            page_range = range(current_page - 5, paginator.num_pages + 1)
        else:
            page_range = range(current_page - 5, current_page + 5)
    else:
        page_range = paginator.page_range
    print(page_range)
    data = {'page': page, 'paginator': paginator, 'current_page': current_page, 'page_range': page_range}
    return render(request, 'api_list.html', data)

动态返回页码逻辑:

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

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

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

html

<div class="container" id="nav" style="text-align:center;">
    <ul class="pagination" id="page" >
        <li>共{{ paginator.num_pages }}页/第{{page.number}}页 跳转到第
            <input type="number" style="width: 50px" min="1" max = {{paginator.num_pages}} value="{{ current_page }}"><button>跳转</button></li>

        {% if page.has_previous %}
            <li class="previous"><a href="{{ request.path }}?page={{ page.previous_page_number }}">上一页</a></li>
        {% else %}
            <li class="previous disabled"><a href="#">上一页</a></li>
        {% endif %}
        {% for num in page_range %}
            {% if num == current_page %}
            <li class="active" style="backgroud:#C6E2FF"><a href="{{ request.path }}?page={{ num }}">{{ num }}</a></li>
            {% else %}
            <li class="item"><a href="{{ request.path}}?page={{ num }}">{{ num }}</a></li>
            {% endif %}
        {% endfor %}
        {% if page.has_next %}
            <li class="next"><a href="{{ request.path}}?page={{ page.next_page_number }}">下一页</a></li>
        {% endif %}
    </ul>
</div>

<script type="text/javascript">
    $('button').click(function () {
        var num = $('input').val();
        console.log(num);
        if(num<=0 || num>{{ paginator.num_pages }}){
            $('input').val('');
        }else{
            window.location.href='{{ request.path}}?page='+num;
        }
    })
</script>
  • 页码居中:

div 标签设置:style=“text-align:center;”文章来源地址https://www.toymoban.com/news/detail-522175.html

  • 页面跳转
    设置默认值、最小值、最大值:min=“1” max = {{paginator.num_pages}} value="{{ current_page }}
<li>共{{ paginator.num_pages }}页/第{{page.number}}页 跳转到第
            <input type="number" style="width: 50px" min="1" max = {{paginator.num_pages}} value="{{ current_page }}"><button>跳转</button></li>
  • 动态页码
		{% for num in page_range %}
            {% if num == current_page %}
            <li class="active" style="backgroud:#C6E2FF"><a href="{{ request.path }}?page={{ num }}">{{ num }}</a></li>
            {% else %}
            <li class="item"><a href="{{ request.path}}?page={{ num }}">{{ num }}</a></li>
            {% endif %}
        {% endfor %}

到了这里,关于【Django】列表数据Paginatior分页,动态返回页码,显示当前页、总页数、跳转页的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • pagination分页、页码组件(基于element ui组件库)

    以下@表示路径别名src,具体可在vue.config.js中配置 具体功能是,当点击了分页,获取表格之后,重新使得滚动条回到初始位置 ,scrollTo(0, 800),参数0和800表示需要0.8s的时间回到滚动条距离顶部0位置。 template中 data中 methods中 loading为表格加载圈控制 dateRange为表格的搜索参数

    2024年02月01日
    浏览(26)
  • 3. 爬取自己CSDN博客列表(自动方式)(分页查询)(网站反爬虫策略,需要在代码中添加合适的请求头User-Agent,否则response返回空)

    1. 如何爬取自己的CSDN博客文章列表(获取列表)(博客列表)(手动+python代码方式) 2. 获取自己CSDN文章列表并按质量分由小到大排序(文章质量分、博客质量分、博文质量分)(阿里云API认证) https://dontla.blog.csdn.net/?type=blog https://blog.csdn.net/community/home-api/v1/get-business-lis

    2024年02月12日
    浏览(31)
  • django rest_framework 框架动态设置序列化返回的字段

    动态修改字段可以使Django rest框架API像graphQL端点一样,只从模型中检索所需的字段。 一旦序列化器被初始化,就可以使用.fields属性访问序列化器上设置的字段字典。访问和修改此属性允许您动态修改序列化器。 显式地修改fields参数可以帮助您做一些奇怪的事情,例如在运行

    2024年02月16日
    浏览(42)
  • Mybatis分页查询同时返回总数和数据

    我们在使用Mybatis分页查询数据列表时,在用户的一个请求中常常需要同时返回当前页的列表数据以及满足条件的数据总条数用于分页。 1)执行两次SQL,一次查列表,一次查总数       这种方法最简单,也最容易实现。 2)分页插件PageHelper       另一种常用的方式就是使用

    2024年02月14日
    浏览(27)
  • 后端一次返回大量数据,前端做分页处理

    问题描述:后端接口返回大量数据,没有做分页处理,不支持传参pageNum,pageSize 本文为转载文章,原文章:后端一次返回大量数据,前端做分页处理 1.template中 分页 对应的模型 2.script中 获取后端数据 改变页数事件 改变条数事件

    2024年02月15日
    浏览(23)
  • 重构优化第三方查询接口返回大数据量的分页问题

    # 问题描述      用户线上查询其上网流量详单数据加载慢,且有时候数据没有响应全~      1、经排除是调用第三方数据量达10w条响应会超时,数据没正常返回      2、现有线上缓存分页也是加载慢数据不能正常展示      3、第三方接口返回类似报文jsonj:           4、我

    2024年02月09日
    浏览(37)
  • Django和jQuery,实现Ajax表格数据分页展示

    当存在重新请求接口才能返回数据的功能时,若页面的内容很长,每次点击一个功能,页面又回到了顶部,对于用户的体验感不太友好,我们希望当用户点击这类的功能时,能直接加载到数据,请求后端的操作不会呈现在前端,给用户一种无感知的状态。 若希望在不重新加载

    2024年02月08日
    浏览(32)
  • Django接口返回JSON格式数据报文

    目录 遇到问题 Django返回json结构报文 不可行方式python json 可行方式JsonResponse+QuerySet.values()。 python的两个web框架,flask和django,两者都具有view 模板的章节,但是当前开发一个应用,大部分采用前后端分离的合作方式。因此必然面对的一个事情就是接口返回json格式的数据报文。

    2024年02月15日
    浏览(37)
  • MybatisPlus使用Left Join...on...一对多多表联查和Ipage分页返回数据问题

    问题: 一对多关系表使用MybatisPlus的Ipage进行分页查询,会先执行联表查询sql语句,然后进行分页。  像图中联表查询一对多关系,会有多条重复数据,使用Ipage分页会将这10条数据返回到xml中resultMap绑定的type。造成一页展示的数据少于10条。 针对这种我们采用子查询的方式解

    2024年02月13日
    浏览(29)
  • ElementUI之动态树+数据表格+分页->动态树,动态表格

    动态树 动态表格 1.动态树 2.动态表格  

    2024年02月07日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包