栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

分页器制作

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

分页器制作

        分页操作是我们在前端展示大量数据的必须操作。下面介绍了一种简单分页器实现的基本原理和步骤,数据来源于数据库。

        工具: python中的django框架,MySQL数据库。

        首先,在进行分页制作之前,需要明确以下几个问题:

        ①想访问哪一页

        需要访问哪一页可以通过前端,通过直接在url后面携带数据的‘GET’请求方式向后端传递数据,例如:url/?page=1,此时获取的展示页码为字符串类型,需要我们手动转为整型才可以完成后续的加减操作。后端获取数据方式为:

current_page=request.GET.get('page', 1)
int_cur_page_num = int(current_page_num)

当前端有页码数据传入时则自动获取当前页码,当没有页码传入时,自动在页面显示第一页

        ②每页需要展示多少条内容

        每页显示的内容由我们自己定义,如:

per_page_num = 10

        ③内容展示的起始位置和终止位置

        起始位置和终止位置的确定,根据每页展示内容的数量和当前展示的页码可以计算得到,起始页码和终止页码计算如下:

# 起始页码    
start_page = (int_cur_page_num-1) * per_page_num

# 终止页码
end_page = int_cur_page_num*per_page_num

# 传递给前端需要展示的内容
book_list = models.Book.objects.all()[start_page:end_page]

        通过解决以上三个问题,基本实现了数据分页显示的操作,但是,此时需要我们手动传入需要展示的哪一页的数值(图中标红的位置),这无疑会给使用者带来很大的麻烦。

          为了解决以上以上问题,需要在下端展示出可以点击的展示页码,通过点击即可实现展示页的跳转。在引用了bootstrap中的分页组件,通过该组件可以简单有效的解决展示页码向后端传递的问题,对其中的 li 标签进行简单修改即可,修改结果的如下。通过在后端操作修改数字1,2,3....即可。

  • 1
  •          需要修改展示页,首先需要对展示对象进行处理,一是统计需要展示内容的所有数量,二是确定展示页面的数量。

            统计需要展示内容的数量利用采用count方法,确定展示页面的数量利用divmode方法(自己确定每页展示内容为10页),代码如下。

    # 确定展示内容数量
    book_query = models.Book.objects.all()  # 获取需要展示的内容
    book_num = book_query.count()     # 表示需要展示内容的数量
    
    # 确定展示页面数量
    per_page_num = 10
    page_num,more = divmod(book_num, per_page_num)  # 页面数量用page_num表示,more表示余数
    if more:                                        # 通过余数来更近一步确认页面数量
        page_num += 1

            至此,由于页面数量无法传到前端进行操作,所以将标签页写在后端,然后返回给前端,前端再进行显示。

    page_html = ''
    # 确保下端展示页链接数不出现负数,展示页码开始为第一页
    limit_num = 6
    if int_cur_page_num < 6:
        now_num = limit_num
    else:
        now_num = int_cur_page_num
    # 确定下端展示页码链接的数量,为当前展示页码的前5个和后5个,总共11个
    for i in range(now_num - 5,now_num + 6):  
          # 将显示页进行高亮显示
        if int_cur_page_num == i:
            # 向前端传递的展示页链接html标签全部存储与page_html中,并对当前显示页进行高亮显示
            page_html = page_html+'
  • %s
  • '%(i,i) else: page_html = page_html + '
  • %s
  • ' % (i, i)

            通过以上步骤已经基本完成了分页器的基本操作。通过都以上代码进行组合即可基本实现前端分页器的显示。

    后端代码整体代码如下:

    def ab_bo(request):
        book_query = models.Book.objects.all()
        book_num = book_query.count()
        current_page_num = request.GET.get('page',1) # 获取访问的展示页,如果没有则显示第一页
        int_cur_page_num = int(current_page_num)
        per_page_num = 10
        page_num,more = divmod(book_num, per_page_num)
    
        if more:
            page_num += 1
        page_html = ''
        limit_num = 6
        if int_cur_page_num < 6:
            now_num = limit_num
        else:
            now_num = int_cur_page_num
        for i in range(now_num - 5,now_num + 6):
            if int_cur_page_num == i:
                page_html = page_html+'
  • %s
  • '%(i,i) # 将显示页进行高亮显示 else: page_html = page_html + '
  • %s
  • ' % (i, i) start_page = (int_cur_page_num-1) * per_page_num end_page = int_cur_page_num*per_page_num book_list = models.Book.objects.all()[start_page:end_page] return render(request, 'ab_bo.html', locals())

     前端页码展示如下:

        
            
                {% for foo in book_list %}
                

    {{ foo.title }}

    {% endfor %}

     最终效果如下:

             以上代码表示了一个简单分页器的实现过程,更过的功能还可以在此基础上进行修改和添加,恳请大家不吝赐教呀~~~~~

     

    转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/293980.html
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号