Django(笔记3)/(分页操作)

一、分页的模块导入

from django.core.paginator import Paginator

二、Paginator基本属性的使用

from django.core.paginator import EmptyPage    #捕获异常
def fy_one(request):
    book_list = models.Book.objects.all()
    paginator = Paginator(book_list,5)
    try:
        page_num = int(request.GET.get('page',1))
        page_obj = paginator.page(page_num)
    except EmptyPage :
        page_num = 1
        page_obj = paginator.page(page_num)
    start = page_num-3
    end = page_num+2
    if page_num<=3:
        start = 0
        end = 5
    elif page_num+2 >= paginator.num_pages:
        start = paginator.num_pages - 5
        end = paginator.num_pages
    page_range = paginator.page_range[start:end]
    return render(request,'app01/index.html',locals())

四、前端的实现过程

<body>
<h3>INDEX</h3>
{#遍历每页的内容#}
<ul>
    {% for book_obj in page_obj %}
        <li>{{ book_obj.name }}</li>
    {% endfor %}
</ul>

{#分页按钮的逻辑过程#}
<nav aria-label="Page navigation">
    <ul class="pagination">
        {#  上一页#}
        <li>
            {% if page_obj.has_previous %}
              <a href="?page={{ page_obj.previous_page_number }}" aria-label="Previous">
                <span aria-hidden="true">上一页</span>
            </a>
            {% endif %}
        </li>
        {% for i in page_range %}
            {% if page_num == i %}
                <li class="active"><a href="?page={{ i }}">{{ i }}</a></li>
            {% else %}
                <li><a href="?page={{ i }}">{{ i }}</a></li>
            {% endif %}
        {% endfor %}
        {#        下一页#}
        <li>
            {% if page_obj.has_next %}
             <a href="?page={{ page_obj.next_page_number }}" aria-label="Next">
                <span aria-hidden="true">下一页</span>
            </a>
            {% endif %}
        </li>
    </ul>
</nav>
</body>

五、实现后的效果展示

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值