django 内置分页功能

导入分页的包

     

from django.core.paginator import Paginator

1.类方法

  • Page.has_next()  如果有下一页,则返回True。
  • Page.has_previous() 如果有上一页,返回 True。
  • Page.has_other_pages() 如果有上一页或下一页,返回True。
  • Page.next_page_number() 返回下一页的页码。如果下一页不存在,抛出InvlidPage异常。
  • Page.previous_page_number() 返回上一页的页码。如果上一页不存在,抛出InvalidPage异常。
  • Page.start_index() 返回当前页上的第一个对象,相对于分页列表的所有对象的序号,从1开始。比如,将五个对象的列表分为每页两个对象,第二页的start_index()会返回3。
  • Page.end_index() 返回当前页上的最后一个对象,相对于分页列表的所有对象的序号,从1开始。 比如,将五个对象的列表分为每页两个对象,第二页的end_index() 会返回 4。

2.类属型

  • Page.object_list 当前页上所有对象的列表。
  • Page.number 当前页的序号,从1开始。
  • Page.paginator 相关的Paginator对象。

分页例子:

from django.shortcuts import render,HttpResponse
from .models import User
from django.core.paginator import Paginator


def users(req):
    cur_page = req.GET.get("cur_page")
    res = User.objects.all()
    paginator = Paginator(res,10)#每页显示十个
    user_list = paginator.page(cur_page)#显示当前页的内容
    return render(req,"login.html",{"user_list":user_list})

html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h2>人员名单</h2>
<ul>
    {% for item in user_list.object_list %}
        <li>{{ item.username }}</li>
    {% endfor %}
</ul>
<div>
        #上一页按钮
    {% if user_list.has_previous %}
        <a href="?cur_page={{ user_list.previous_page_number }}">上一页</a>
    {% endif %}
        #页码显示
    {% for item in user_list.paginator.page_range %}
        {% if item == user_list.number %}
            <a href="?cur_page={{ item }}" style="display: inline-block;color: red;background-color: mediumblue" >{{ item }}</a>
        {% else%}
            <a href="?cur_page={{ item }}">{{ item }}</a>
        {% endif %}
    {% endfor %}
        #下一页按钮
    {% if user_list.has_next %}
        <a href="?cur_page={{ user_list.next_page_number }}">下一页</a>
    {% endif %}
</div>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/u014248032/article/details/84954337
今日推荐