Django_Paginator分页器

news/2024/11/29 13:40:30/

目录

分页器代码说明

简单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 Viewclass 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.ppmy.cn/news/824100.html

相关文章

HJ2 计算某字符出现次数

这道题&#xff0c;注意以下几点&#xff1a; 1、字符串和字符的输入方法 next&#xff08;&#xff09;和nextLine&#xff08;&#xff09;的区别&#xff1a; &#xff08;1&#xff09;hasNext 与 hasNextLine 判断是否还有输入的数据 &#xff08;2&#xff09;next()…

低代码开发平台助力解决企业开发效率问题

编者按&#xff1a;随着企业应用需求的不断增加&#xff0c;提高企业开发效率已经成为许多企业的目标。传统的开发方法显然不适用&#xff0c;开发平台通过可视化拖拉拽搭建等易用性和高扩展性可以帮助企业解决这个问题。 关键词&#xff1a;可视化开发、私有化部署、前后端分离…

计算机网络相关的韩语词汇,韩语电脑类词汇

韩语单词学习-电脑用语 序号汉语韩语 1虚拟가상 2虚拟世界 가상세계 3搜索、检索 검색 4探索引擎 검색엔진 5公告牌系统,公告板 게시판 6网关 게이트웨이 7路径 경로 8帐号 계정 9光缆 광케이블 10图卡 그래픽카드 11退出键나가기 버튼 12航海家航海者 네비게이터 13网景 네스케…

搜狗输入法2017老版本 v8.8.0.1814电脑版

​​搜狗输入法是一款用起来十分简单的电脑输入法软件,由于许多伙伴对新版的输入法不是很适应,比较留恋2017的旧版本,但却不知道该如何替成旧版本,因此小编带来了搜狗输入法2017老版本,此版本保留了许多旧版本的设置与功能,让你再不适应新版的情况下,享受更佳顺手通常的…

计算机的标准输入法,维语输入法电脑版

维软标准输入法是一款电脑版的维语输入法软件&#xff0c;集维吾尔字体和输入法于一体&#xff0c;支持维、哈、柯文字符代码及键盘标准&#xff0c;并且还拥有拼音检查、代码转换等功能&#xff0c;自带ALKATIP编辑器&#xff0c;可以将word中的多行字体复制到图形处理软件中&…

C++之非const转const类型(一百五十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

【Linux后端服务器开发】Shell外壳

目录 一、Shell外壳概述 二、描述Shell外壳原理的生动例子 三、C语言模拟实现Shell外壳 一、Shell外壳概述 在狭义上 , 我们称Linux操作系统的内核为 Linux 在广义上 , Linux发行版 Linux内核 外壳程序 就比如市面上现在的redhat, centos, ubuntu等等我们耳熟能详的Linux发…