Django_Paginator分页器

news2024/11/27 22:19:53

目录

分页器代码说明

简单demo

源码等资料获取方法


分页器代码说明

import os
import random
# 需要导入分页器类

from django.core.paginator import Paginator, EmptyPage


# 导入配置django配置文件
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dailyfresh.settings')


iterable_obj = [random.randint(1, 100) for i in range(45)]   # 必须为可迭代对象,比如 QuerySet, list, tuple
print(iterable_obj)
# 实例化分页器
paginator = Paginator(object_list=iterable_obj, per_page=20)

# 每页显示数据量
print("每页显示数据量:%s" % paginator.per_page)
# 总页数
print("总页数:%s" % paginator.num_pages)
# 数据总数
print("数据总数:%s" % paginator.count)

# 获取某页的page对象,如果为不存在的页码会抛EmptyPage异常
try:
    page_obj = paginator.page(random.randint(1, 4))
except EmptyPage:
    page_obj = paginator.page(1)
    print("[异常]获取page对象超出范围")
print(page_obj)
print("通过page对象获取分页器实例", page_obj.paginator)

# 获取当前页码
print("获取当前页码:%s" % page_obj.number)
# 获取当前页内容
print("获取当前页内容:%s" % page_obj.object_list)

# 校验是否有上一页,返回布尔值
print("是否有上一页:%s" % page_obj.has_previous())
# 上一页页码。如果无上一页,则抛错
print("上一页页码:%s" % page_obj.previous_page_number())

# 校验是否有下一页,返回布尔值
print("是否有下一页:%s" % page_obj.has_next())
# 下一页页码。如果无下一页,则抛错
print("下一页页码:%s" % page_obj.next_page_number())

执行结果如下:

简单demo

定义视图

from django.views import View


class DemoView(View):

    def get(self, request, page_num):
        iterable_obj = [i for i in range(45)]
        # 对数据进行分页
        paginator = Paginator(iterable_obj, 10)
        cur_page = paginator.page(page_num)
        content = {
            "cur_page": cur_page,
        }
        return render(request, "demo.html", content)

添加路由

from django.urls import re_path, path
from apps.goods import views
# 定义命名空间
app_name = "goods"

urlpatterns = [
    re_path("demo_list/(?P<page_num>\d+)", views.DemoView.as_view(), name="demo_list")
]

添加demo.html模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!-- 展示每页信息 -->
<ul>
    {% for v in cur_page.object_list %}
        <li>{{v}}</li>
    {% endfor %}
</ul>

<!-- 生成页码信息 -->
<div>
    {% if cur_page.has_previous %}
        <a href="{% url 'goods:demo_list' cur_page.previous_page_number %}">上一页</a>
    {% endif %}

    {% for page_num in cur_page.paginator.page_range %}
        <a href="{% url 'goods:demo_list' page_num %}">{{ page_num }}</a>
    {% endfor %}

    {% if cur_page.has_next %}
         <a href="{% url 'goods:demo_list' cur_page.next_page_number %}">下一页</a>
    {% endif %}
</div>
</body>
</html>

界面第5页展示如下:


源码等资料获取方法

 各位想获取源码的朋友请点赞 + 评论 + 收藏,三连!

三连之后我会在评论区挨个私信发给你们~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/742164.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java的Hibernate框架中集合类数据结构的映射编写教程

Java的Hibernate框架中集合类数据结构的映射编写教程 一、集合映射 1.集合小介 集合映射也是基本的映射&#xff0c;但在开发过程中不会经常用到&#xff0c;所以不需要深刻了解&#xff0c;只需要理解基本的使用方法即可&#xff0c;等在开发过程中遇到了这种问题时能够查询…

《机器学习公式推导与代码实现》chapter5-线性判别分析LDA

《机器学习公式推导与代码实现》学习笔记&#xff0c;记录一下自己的学习过程&#xff0c;详细的内容请大家购买作者的书籍查阅。 线性判别分析 线性判别分析(linear discriminant analysis, LDA)是一种经典的线性分类方法&#xff0c;其基本思想是将数据投影到低维空间&…

openGauss学习笔记-06 openGauss 基本概念

文章目录 openGauss学习笔记-06 openGauss 基本概念6.1 数据库&#xff08;Database&#xff09;6.2 数据块&#xff08;Block&#xff09;6.3 行&#xff08;Row&#xff09;6.4 列&#xff08;Cloumn&#xff09;6.5 表&#xff08;Table&#xff09;6.6 数据文件&#xff08…

Opencv之角点 Harris、Shi-Tomasi 检测详解

角点&#xff0c;即图像中某些属性较为突出的像素点 常用的角点有以下几种&#xff1a; 梯度最大值对应的像素点两条直线或者曲线的交点一阶梯度的导数最大值和梯度方向变化率最大的像素点一阶导数值最大&#xff0c;但是二阶导数值为0的像素点 API简介&#xff1a; void c…

Go语言网络编程:HTTP服务端之底层原理与源码分析——http.HandleFunc()、http.ListenAndServe()

一、启动 http 服务 import ("net/http" ) func main() {http.HandleFunc("/ping", func(w http.ResponseWriter, r *http.Request) {w.Write([]byte("ping...ping..."))})http.ListenAndServe(":8999", nil) }在 Golang只需要几行代…

MySQL存储过程和存储函数练习

创建表并插入数据 字段名 数据类型 主键 外键 非空 唯一 自增 id INT 是 否 是 是 否 name VARCHAR(50) 否 否 是 否 否 glass VARCHAR(50) 否 否 是 否 否 sch 表内容 id name glass 1 xiaommg glass 1 2 xiaojun glass 2 1、创建一个可以统计表格内记录条数的存储函数 &#…

耳夹式骨传导耳机哪个牌子好?耳夹骨传导耳机推荐

骨传导耳机品牌越来越多&#xff0c;选择骨传导耳机时可不是一件简单的事&#xff0c;在挑选的时候首先需要考虑到耳机自身的综合性能&#xff0c;以及耳机的配置如何都会影响到我们使用耳机的幸福感&#xff0c;接下来我来给大家挑选几款目前口碑不错的耳夹式骨传导耳机&#…

windows下使用cd命令切换到D盘的方法

windows下使用cd命令切换到D盘的方法 winr输入cmd进入终端

【CANFD详细介绍与CAN区别】

在汽车领域&#xff0c;随着人们对数据传输带宽要求的增加&#xff0c;传统的CAN总线由于带宽的限制难以满足这 种增加的需求。此外为了缩小CAN网络&#xff08;max. 1MBit/s&#xff09;与FlexRay(max.10MBit/s)网络的带宽差距&#xff0c;BOSCH公司推出了CAN FD。 CAN FD&…

基于控制屏障函数的安全关键系统二次规划(适用于ACC)(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 基于控制屏障函数的安全关键系统二次规划&#xff08;适用于ACC&#xff09;是一种用于自适应巡航控制&#xff08;ACC&#x…

Servlet文档2

servlet文档2 HttpServletRequest 获取请求头API getMethod()获取请求的方式getRequestURI()获取请求的uri&#xff08;相对路径&#xff09;getRequestURL()获取请求的url&#xff08;绝对路径&#xff09;getRemoteAddr()获取请求的地址getProtocol()获取请求的协议getRem…

Vue3 CSS v-bind 计算和三元运算

官方文档 中指出&#xff1a;CSS 中的 v-bind 支持 JavaScript 表达式&#xff0c;但需要用引号包裹起来&#xff1a; 例子如下&#xff1a; <script lang"ts" setup> const treeContentWidth ref(140); </script><style lang"less" scop…

mschart Label Formart显示数值的格式化

默认这个数值想显示2位小数&#xff0c; 格式化代码如下。 series1.Label "#VAL{###.###}";

字符指针?指针数组?数组指针?《C语言指针进阶第一重奏》

目录 一.字符指针 1.1字符指针的认识 1.2字符指针存放字符串 1.3字符指针的使用 二.指针数组 2.1指针数组的认识 三.数组指针 3.1数组指针的认识 3.2数组名和&数组名的区别 3.3数组指针的使用 3.4数组参数&#xff0c;指针参数 3.5一维数组传参 3.6二维数组传…

如何让Stable Diffusion正确画手(1)-通过embedding模型优化图片质量

都说AI画手画不好手&#xff0c; 看这些是我用stable diffusion生成的图片&#xff0c;小姐姐都很漂亮&#xff0c;但手都千奇百怪&#xff0c;破坏了图片的美感。 其实只需要一个提示词&#xff0c;就能生成正确的手部&#xff0c;看这是我重新生成的效果&#xff0c;每一个小…

【leetcode】面试题 02.01. 移除重复节点 (python + 链表)

题目链接&#xff1a;[leetcode] 面试题 02.01. 移除重复节点 # Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val x # self.next Noneclass Solution(object):def removeDuplicateNodes(self, he…

MySQL为什么采用B+树作为索引底层数据结构?

索引就像一本书的目录&#xff0c;通过索引可以快速找到我们想要找的内容。那么什么样的数据结构可以用来实现索引呢&#xff1f;我们可能会想到&#xff1a;二叉查找树&#xff0c;平衡搜索树&#xff0c;或者是B树等等一系列的数据结构&#xff0c;那么为什么MySQL最终选择了…

尚硅谷Docker实战教程-笔记12【高级篇,Docker-compose容器编排】

尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】视频地址&#xff1a;尚硅谷Docker实战教程&#xff08;docker教程天花板&#xff09;_哔哩哔哩_bilibili 尚硅谷Docker实战教程-笔记01【基础篇&#xff0c;Docker理念简介、官网介绍、平台入门图解、平台架构图解】…

一篇文章搞懂Libevent网络库的原理与应用

1. Libevent介绍 Libevent 是一个用C语言编写的、轻量级的开源高性能事件通知库&#xff0c;主要有以下几个亮点&#xff1a; > - 事件驱动&#xff08; event-driven&#xff09;&#xff0c;高性能; > - 轻量级&#xff0c;专注于网络&#xff1b; > - 源代码相当…

前端(五)——从 Vue.js 到 UniApp:开启一次全新的跨平台开发之旅

&#x1f642;博主&#xff1a;小猫娃来啦 &#x1f642;文章核心&#xff1a;从 Vue.js 到 UniApp&#xff1a;开启一次全新的跨平台开发之旅 文章目录 UniApp和vue.js什么是UniApp&#xff1f;UniApp的写法什么是vue.js&#xff1f;UniApp与vue.js是什么关系&#xff1f; 为什…