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

019 分页

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

019 分页

分页

文章目录
  • 分页
    • 定义
    • Paginator 对象
      • Paginator 属性
    • Paginator方法 - page
      • page 对象的属性
      • page 对象的方法
    • 实战

定义
  • 分页是指在web页面有大量数据需要显示,为了阅读方便在每个
    页页中只显示部分数据。

  • 优点:

    1. 方便阅读

    2. 减少数据提取量,减轻服务器压力。

  • Django提供了 Paginator 类可以方便的实现分页功能

  • Paginator类位于django.core.paginator 模块中。

Paginator 对象

我们使用 paginatror 可以创建一个分类对象

from django.core.paginator import Paginator
paginator = Paginator(object_list, per_page)
  • 参数:
    • object_list 需要分类数据的对象列表
    • per_page 每页数据个数
  • 返回值
    • Paginator 的对象
Paginator 属性
属性名说明
Paginator.count需要分页数据的对象总数
Paginator.num_pages分页后的页面总数
Paginator.page_range从1开始的 range 对象,用于记录当前页面的页码
Paginator.per_page每页数据的个数
Paginator方法 - page

我们可以使用 page 方法来细致的操作每一页上存储的数据

from django.core.paginator import Paginator

# 创建一个 paginator 对象
paginator = Paginator(object_list, per_page)

# 创建一个 Page 对象
page = paginator.page(number)
  • 参数 number 为页码信息(从1开始)
  • 如果当前的页码不存在就会抛出 InvalidPage 异常
  • 返回当前 number 页对应的信息
page 对象的属性

我们的 page 对象也是有属性的,page也是一个对象

from django.core.paginator import Paginator

# 创建一个 paginator 对象
paginator = Paginator(object_list, per_page)

# 创建一个 Page 对象
page = paginator.page(number) # 这个 page 也是有自己的方法的
属性名说明
page.object_list当前页所有数据对象的列表
page.number当前页的序号,从1开始
page.paginator当前 page 对象相关的 paginator 对象
page 对象的方法

我们的 page 对象不但有很多的属性,同时有很多方法

方法名字说明
page.has_next()如果有下一页返回True
page.has_previous()如果有上一页返回True
page.has_other_pages()如果有上一页或下一页返回True
page.next_page_number()返回下一页的页码
如果下一页不存在,拋出InvalidPage异常
page.previous_page_number()返回上一页的页码
如果上一页不存在抛出InvalidPage异常
实战
  • 制作一个自己的分类标签页
  1. 前往视图函数写代码
from django.shortcuts import render
from django.core.paginator import Paginator

def test_paginator_views(request):
    # 获取我们浏览器当前的页码,如果没有就默认给一个1
    page_num = request.GET.get('page_num', 1)
    
    # 创建我们希望显示的数据列表
    data_list = ['新闻频道_央视网(cctv.com)',
                 '新闻 - 视频大全 - 高清在线观看',
                 '新闻中心首页_新浪网',
                 '新闻中心-腾讯网_腾讯新闻',
                 '新闻的最新相关信息',
                 '搜狐新闻-搜狐',
                 '网易新闻',
                 '新闻吧 - 百度贴吧',
                 '新闻(一种文体) - 百度百科',
                 "秒当百科"]
    
    # 创建一个 paginator 实例,每一页显示 2 个数据
    paginator = Paginator(data_list, 2)
    
    # 创建一个页面控制对象
    page = paginator.page(int(page_num))
    
    return render(request, 'testp/testp.html',locals())
  1. 定义路由
# 子路由的 urls.py 文件内
from django.urls import path
from . import views

urlpatterns = [
   path('testp',views.test_paginator_views,name='testp'),
]

主路由的 urls.py 请自行配置

  1. 编写模板



    
    
    
    分页功能测试


    
    https://blog.csdn.net/m0_52475295/article/details/{% for eachObject in page.object_list %}
    

{{eachObject}}

https://blog.csdn.net/m0_52475295/article/details/{% endfor %} https://blog.csdn.net/m0_52475295/article/details/{% if page.has_previous %} {page.previous_page_number}}>上一页 https://blog.csdn.net/m0_52475295/article/details/{% else %} 上一页 https://blog.csdn.net/m0_52475295/article/details/{% endif %} https://blog.csdn.net/m0_52475295/article/details/{% for each_page in paginator.page_range %} https://blog.csdn.net/m0_52475295/article/details/{% if each_page == page.number %} {{each_page}} https://blog.csdn.net/m0_52475295/article/details/{% else %} {each_page}}>{{each_page}} https://blog.csdn.net/m0_52475295/article/details/{% endif %} https://blog.csdn.net/m0_52475295/article/details/{% endfor %} https://blog.csdn.net/m0_52475295/article/details/{% if page.has_next %} {page.next_page_number}}>下一页 https://blog.csdn.net/m0_52475295/article/details/{% else %} 下一页 https://blog.csdn.net/m0_52475295/article/details/{% endif %}
  1. 查看效果

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

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

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