首页 > 其他分享 >24、Django-网站分页功能-Pagintor类

24、Django-网站分页功能-Pagintor类

时间:2024-07-09 22:43:43浏览次数:14  
标签:24 分页 对象 number Django Pagintor 一页 页码 page

-Django提供了Paginator类可以方便的实现分页功能
-Painator 类 位于 django.core.pagintor 模块中
负责分页数据整体的管理
对象的构造方法:
paginator = Paginator(object_list, per_page)
  
    - 参数:
        - object_list :需要分页的数据的对象列表-数据的个数
        - per_page:每页数据的个数
    
    - 返回值:
        - Paginator的对象
        
        
Paginator的属性:
    - count:需要分页数据的对象总数
    - num_page:分页后的页面总数
    - page_range:从1开始的range对象、用于记录当前的页码
    - per_page 每页数据的个数
    
Pagintor方法:
paginator对象.page(number)
    - 参数:number为页码信息(从1开始)
    - 返回当前number 页对应的页面信息
    - 如果提供的页码不存在、抛出InvalidPage异常
    

page对象 定义:
- 负责具体某一页的数据管理
- 创建对象
    - Paginator对象的page()方法返回Page对象
    - page = pageinator.page(页码)
    
Page对象属性:
    - object_list:当前页面上所有数据对象的列表
    - number:当前页面的序号、从1开始
    - paginator:当前page对象相关的Pageinator对象


Page对象方法:
    - has_next(): 如果有下一页返回True
    - has_previous():如果有上一页返回True
    - has_other_pages():如果有上一页或下一页返回True
    - next_page_number():返回下一页的页码、如果下一页不存在、抛出InvalidPage异常
    - previous_page_number():返回上一页的页码、如果上一页不存在、抛出InvalidPage异常

 

案例

views.py
---------------------------------------------------------------
#分页功能
def test_page(request):
    # 获取页码
    page_num = request.GET.get('page', 1)
    all_data = ['a', 'b', 'c', 'd', 'e']
    # 创建分页对象 5个数据一页
    paginator = Paginator(all_data, 2)
    #初始化 具体页码page对象
    c_page = paginator.page(int(page_num))

    return render(request, 'test_page.html', locals())
-----------------------------------------------------------------------
test_page.html
---------------------------------------------------------------------
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>分页</title>
</head>
<body>

{% for p in c_page %}
    <p>
        {{ p }}
    </p>

{% endfor %}


{% if c_page.haas_previous %}
    <a href="/p_page?page={{ c_page.previous_page_number }}">上一页</a>

{% else %}
    上一页
{% endif %}

{% for p_num in paginator.page_range %}
    {% if p_num == c_page.number %}
        {{ p_num }}
    {% else %}
        <a href="/p_page?page={{ p_num }}">{{ p_num }}</a>
    {% endif %}
{% endfor %}

{% if c_page.has_next %}
    <a href="/p_page?page={{ c_page.next_page_number }}">下一页</a>

{% else %}
    下一页
{% endif %}

</body>
</html>
---------------------------------------------------------------------------
urls.py
---------------------------------------------------------------------
from django.contrib import admin
from django.urls import path
from midware import views

urlpatterns = [
    path('p_page/', views.test_page),
]
---------------------------------------------------------------

 

标签:24,分页,对象,number,Django,Pagintor,一页,页码,page
From: https://www.cnblogs.com/littlecc/p/18202777

相关文章

  • 23、Django-CSRF跨站伪造请求攻击
     配置:1、在settings.py中确认MIDDLEWARE中确保--django.middleware.csrf.CsrfViewMiddleware打开2、在模板中、form标签下添加如下标签:--{%csrf_token%}#这个就是页面中的暗号 案例views.py-------------------------------------------------......
  • 22、Django-中间件-Middleware
    1、中间件是Django请求/响应处理的钩子框架、他是一个轻量级的、低级的“插件”系统,用于全局改变Django的输入或输出2、中间件以类的形式体现3、每个中间件组件负责做一些特定的功能、例如:Django包含一个中间件组件AuthentucationMiddleware、它使用会话将用户与请求关联起来......
  • 29、Django-uWSGI项目部署
    WSGI(WebServerGatewayInterface)Web服务器网关接口、是Python应用程序或框架和Web服务器之间的一种接口、被广泛使用使用pythonmanage.pyrunserver通常只是再开发测试环境中使用当开发结束后、完善的项目代码需要在一个高效稳定的环境中运行、这时可以使用WSGI这里WSGI......
  • 28、Django-发送邮件
    SMTP全称是(SimpleMailTransferProtocol)即简单邮件传输协议(端口是25)-他是一组用于从源地址到目的地址传输邮件的规范、通过它来控制邮件的中转-属于推送协议-负责发送IMAP-邮件相关协议(InternetMailAccessProtocol)即交互式邮件访问协议、是一个应用层协议、端口是143-用来从本地邮件客户端(OutlookExporess、Foxmail、MzzillaThunderbird)访问远程服务......
  • 27、Django-文件上传
    上传规范:1、文件上传必须为POST提交方式2、表单'<form>'中文件上传时必须带有enctype="multipart/form-data"时才会有包含文件内容的数据3、表单中用<inputtype="file"name="xxx">标签上传文件#在视图函数中-用request.FILES取文件框的内容-file=request.FILES['xxx......
  • 30、Django-项目部署-nginx
     原理: 安装: 配置:-这里uwsgi_pass表示使用uwsgi协议转发代理-include表示加载uwsgi协议的参数(固定)-nginx-t  #检查配置文件语法  修改uWSGI:  socket表示启用uwsgi协议      ......
  • Django学习第六天
     启动项目命令pythonmanage.pyrunserver取消模态框功能js实现列表数据删除第二种实现思路使用jquery修改模态框标题编辑页面拿到数据库数据显示默认数据功能实现想要去数据库中获取数据时:对象/字典三种不同的数据类型使用Ajax传入数据实现表单编辑,删除,修改......
  • 16、 Django-多表操作-多个模块的关联-一对一的增删改查- models.onetoone()
    一对一不是数据库的一个连表操作、而是Django独有的一个连表操作、一对一相当于是特殊的一对多的关系、只是相当于加了unique=True models.pyfromdjango.dbimportmodels#身份证classIDCard(models.Model):idcard_num=models.CharField(max_length=18,unique=......
  • 15、 Django-多表操作-多个模块的关联-多对多的增删改查- models.manytomany()
    针对多对多的关系django会自动创建第三张表、也可以通过through参数指定第三张表 models.pyfromdjango.dbimportmodels#Createyourmodelshere.#多对多#用户表:电影=N:M#一个用户可以收藏多部电影#一部电影可以被不同的用户收藏#电影classMovie(models.M......
  • 14、 Django-多表操作-多个模块的关联-一对多的增删改查- models.ForeignKey()
    #多模块关联--关联分类:Django中的三个函数--ForeignKey-称为外键:一对多、将字段定义在多的一端中--ManyToMnayField:多对多、将字段定义在两端的任意一端中--OneToOneField:一对一、将字段定义在任意一端中 如:一对一:一对多:多对多:常用......