python学习:Django的分页组件(8)

Django分页组件

        Django有自己的分页功能模块,我们可以使用Django自带的分页类实现分页。

   使用paginator,实现分页。

示例:

新建page.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>分页</title>
</head>
<body>
    <h1>分页数据</h1>
    <table border="1px solid black">
        <tr>
            <th>数据</th>
        </tr>
        {% for i in pages.object_list %}
        <tr>
            <td>{{i}}</td>
         </tr>
        {% endfor %}
    </table>

    {% if pages.has_previous %}
        <p><a href="/url_dispatch/page?current_page={{pages.previous_page_number}}">上一页</a></p>
    {% else %}
        <p><a href="/url_dispatch/page?current_page=1">上一页</a></p>
    {% endif %}
{% if pages.has_next %} <p><a href="/url_dispatch/page?current_page={{pages.next_page_number}}">下一页</a></p> {% else %} <p><a href="/url_dispatch/page?current_page={{pages.paginator.num_pages}}">下一页</a></p> {% endif %} </body> </html>

 

修改urls.py,增加分页页面路径

path("page/",views.page)

 

修改views.py,增加对应视图函数

#导入使用的包
from django.core.paginator import Paginator,PageNotAnInteger,EmptyPage,Page

#分页数据
data_list = []
for i in range(1,200):
    data_list.append("data" + str(i));
def page(request): #获取当前页 current_page = request.GET.get("current_page"); print("当前页:",current_page) #paginator对象,传入数据和每页显示条数 #per_page:每页显示条数 #count:总数 #num_pages:总页数 #page_range:总页数范围 #page:Page对象 paginator = Paginator(data_list,10); print("每页条数:",paginator.per_page,"总数:",paginator.count,"总页数:",paginator.num_pages,"总页数范围:",paginator.page_range); try: #获取一个页面对象 #has_next:是否有下一页 #next_page_numer:下一页页码 #has_previous:是否有上一页 #previous_page_number:上一页页码 #object_list:分页后数据列表 #number:当前页 #paginator:paginator对象 pages = paginator.page(current_page) except PageNotAnInteger: return HttpResponse("error") except EmptyPage: return HttpResponse("error") return render(request,"page.html",{"pages":pages});

 

posted @ 2020-12-19 14:30  渔歌晚唱  阅读(86)  评论(0)    收藏  举报