Django之分页功能

Django分页功能 文章目录前言一、分页相关类及函数介绍二、使用步骤1.引入库2.读入数据总结 前言 分页是网站数据展示不可缺少的一部分,Django作为一个大而全的框架。自然已为开发者提供了内置分页功能 一、分页相关类及函数介绍 Paginator类一共定义了2个必选参数,2个可选参数,8个类方法 Paginator(object_list, per_page, orphans=0, allow_empty_first_page=True) 参数介绍: object_list:必选,需要进行分页处理的数据。常为列. 阅读详情

Django之分页功能

Django提供了一个新的类来帮助你管理分页数据,这个类存放在django/core/paginator.py.它可以接收列表、元组或其它可迭代的对象。

基本语法

class Paginator(object):
 
    def __init__(self, object_list, per_page, orphans=0,
                 allow_empty_first_page=True):
        self.object_list = object_list
        self.per_page = int(per_page)
        self.orphans = int(orphans)
        self.allow_empty_first_page = allow_empty_first_page
 

基本语法实例

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
 
import os
 
from django.core.paginator import Paginator
objects = ['john','paul','george','ringo','lucy','meiry','checy','wind','flow','rain']<br>
p = Paginator(objects,3)  # 3条数据为一页,实例化分页对象
print p.count  # 10 对象总共10个元素
print p.num_pages  # 4 对象可分4页
print p.page_range  # xrange(1, 5) 对象页的可迭代范围
 
page1 = p.page(1)  # 取对象的第一分页对象
print page1.object_list  # 第一分页对象的元素列表['john', 'paul', 'george']
print page1.number  # 第一分页对象的当前页值 1
 
page2 = p.page(2)  # 取对象的第二分页对象
print page2.object_list  # 第二分页对象的元素列表 ['ringo', 'lucy', 'meiry']
print page2.number  # 第二分页对象的当前页码值 2
 
print page1.has_previous()  # 第一分页对象是否有前一页 False
print page1.has_other_pages()  # 第一分页对象是否有其它页 True
 
print page2.has_previous()  # 第二分页对象是否有前一页 True
print page2.has_next()  # 第二分页对象是否有下一页 True
print page2.next_page_number()  # 第二分页对象下一页码的值 3
print page2.previous_page_number()  # 第二分页对象的上一页码值 1
print page2.start_index()  # 第二分页对象的元素开始索引 4
print page2.end_index()  # 第2分页对象的元素结束索引 6
 

官方解释
在视图中的应用

from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.shortcuts import render
 
def listing(request):
    contact_list = Contacts.objects.all()
    paginator = Paginator(contact_list, 25) # Show 25 contacts per page
 
    page = request.GET.get('page')
    try:
        contacts = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        contacts = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        contacts = paginator.page(paginator.num_pages)
 
    return render(request, 'list.html', {'contacts': contacts})
 

在template的html模板中的应用

{% for contact in contacts %}
    {# Each "contact" is a Contact model object. #}
    {{ contact.full_name|upper }}<br />
    ...
{% endfor %}
 
<div class="pagination">
    <span class="step-links">
        {% if contacts.has_previous %}
            <a href="?page={{ contacts.previous_page_number }}">previous</a>
        {% endif %}
 
        <span class="current">
            Page {{ contacts.number }} of {{ contacts.paginator.num_pages }}.
        </span>
 
        {% if contacts.has_next %}
            <a href="?page={{ contacts.next_page_number }}">next</a>
        {% endif %}
    </span>
</div>
 

举例讲述分页功能的使用
目的说明
  现要实现如下功能

1、网页上显示分页数据,3条数据为一页

2、有分页导航功能,被选中页高亮显示

3、如果没有上一页或下一页,则不出现箭头导航

4、如果最后一页的数据少于2条,合并到上一页

效果图
  图1:

在这里插入图片描述

图2:

在这里插入图片描述

视图定义

在这里插入图片描述

定义templates

在这里插入图片描述

分页功能优化
目标:

1、在template中的html模板中使用自定义函数

2、不管有多少分页,页面上最多显示5页

基础知识
Django的模板语言包含了各种各样的内置标签和过滤器来满足你的应用需求,不过有时候你也会发现你的需要的功能不在内置的功能中,这时候你可以通过Python语言自定义标签和过滤器来扩展模板引擎,然后在你的模板中使用{% load %}来加载使用它们。

在你的app下创建templatetags包,在其下创建python脚本来定义你的标签和过滤器,如:

polls/
    __init__.py
    models.py
    templatetags/
        __init__.py
        poll_extras.py
    views.py

然后在你的模板中使用

{% load poll_extras %}

项目实战
自定义过滤器和标签

在这里插入图片描述

在模板中引用
在这里插入图片描述

效果图:

在这里插入图片描述

项目工程包路径:

https://github.com/kongzhagen/python/tree/master/Django

Django实现分页功能 在本节中,我们将介绍 Django 为我们提供的高级模块,通过高级模块的学习,你会感受到 Django 的易用性如此之强,但是同时它又很复杂,所以在学习 Django 这样的重度框架的时候,我们一定要切记急躁,对于新的知识要敢于探索,除了要跟随着本教程的进度学习之外,大家也要拿出时间多阅读 Django 源码、官方文档,这样才能帮助自己尽快的提升。 本节要讲的分页功能大家一定不陌生,就像课本上的一篇篇课文一样,如果课文内容很多就会分成很多页,展示给读者。这和我们在开发阶段处理数据信息是一样的,因为大多数情况 阅读详情

相关推荐

django 分页功能的实现

我是参考了这位大神(http://www.cnblogs.com/kongzhagen/p/6640975.html)的文章后自己写的,因为大神的文章中url没有写,另外在写完后页面虽然分页了,但是没有数据显示,那分页了就没什么用了,所以自己弄了下,将这两个问题都搞好了 views 代码: from django.core.paginator import Paginator, Empty

Aochen的博客 6202

django分页(两种办法)

django,分页

qq_37605109的博客 1万+

Beyond the Spec: Decoding Samsung‘s LPDDR6 Sub-Channel and Wide-NRZ Innovations

本文深入解析了三星LPDDR6内存的两大核心技术:Sub-Channel架构与Wide-NRZ信号技术。Sub-Channel架构通过将物理通道划分为多个独立子通道,实现了内存访问的细粒度控制,大幅提升了能效,尤其适用于AI与边缘计算场景。Wide-NRZ则通过增加并行数据线而非采用PAM4,在提升带宽的同时保持了优异的信号完整性与低功耗特性。

weixin_29209801的博客 136

django:分页

一,什么是分页 网页是用户与网站进行交互的主要场所,这种交互主要指数据收集与数据展示。 从试想一下,为什么我们几乎不在网页中一次性展示请求获得的所有数据呢? 如果这个数据量相当小,比如只有几十条,那么一般情况下无需担心,一股脑渲染到页面中就行。 但如果这个数据量比较大,比如几百几千几万条,且一旦这种操作比较频繁,显然就会增加服务器负载,主要瓶颈是数据库。 这里不谈如何实现高并发,只谈如何以轻量化的方式获取并展示数据。 一种有效的方式就是实现分页查询:将一次性获取所有数据的操作,分解为多次查询操作,每次操作只

dangfulin的博客 6273

SpringBoot系列之实现一个AI聊天助手

本文介绍了基于Spring Boot框架实现的AI聊天助手项目。该项目使用Spring Boot 3.2.3、Spring AI 1.0.0-M5等技术栈,集成DeepSeek-R1-Distill-Llama-8B模型实现智能对话功能。文章详细介绍了项目配置流程、运行方式和核心代码实现,包括ChatMessage模型类和服务类ChatService的关键功能,如消息处理、历史记录管理和AI响应获取等。读者可通过提供的GitHub链接获取完整代码,快速搭建自己的AI聊天应用。

Nicky's blog 1450

基于深度学习的航拍图像中地物变化检测

随着无人机技术的飞速发展,航拍图像成为获取地表信息的重要手段之一。然而,由于地球表面的不断变化,监测和识别航拍图像中的地物变化成为一项具有挑战性的任务。在人工智能领域,深度学习技术的兴起为地物变化检测提供了全新的解决方案。本文将介绍基于深度学习的航拍图像中地物变化检测的方法,并附上相应的代码实例。

一键难忘的博客 4176

Django:分页

目录一、分页的定义二、Paginator类和Paginator对象1、Paginator对象2、Paginator属性3、Paginator方法4、Paginator异常三、Page对象1、Page对象的定义和属性2、Page对象的方法四、代码实现1、模板templates中的test_page.html2、视图函数views.py中 一、分页的定义 二、Paginator类和Paginator对象 1、Paginator对象 2、Paginator属性 3、Paginator方法 4、Pagina

weixin_42011794的博客 1251

Open-Sora代码详细解读(2):时空3D VAE

目前开源的DiT视频生成模型不是很多,Open-Sora是开发者生态最好的一个,涵盖了DiT、时空DiT、3D VAE、Rectified Flow、因果卷积等Diffusion视频生成的经典知识点。本篇博客从Open-Sora的代码出发,深入解读背后的原理。

沉迷单车的追风少年 2053

django paginator 分页功能

转自:https://blog.csdn.net/weixin_42077001/article/details/81007127 Django提供了一个新的类来帮助你管理分页数据,这个类存放在django/core/paginator.py.它可以接收列表、元组或其它可迭代的对象。 基本语法 class Paginator(object): def __init__(self, ob...

1027

YOLO26小目标检测实战:STAL标签分配+MuSGD优化,VisDrone数据集漏检率降50%

小目标检测是计算机视觉的经典难题,而VisDrone数据集小目标占比极高:数据集中小目标(像素面积<32×32)占比超过60%,且大量目标仅为几个像素,特征信息极度匮乏;背景复杂且干扰多:无人机航拍场景包含建筑物、树木、人群、车辆等复杂背景,小目标易被背景淹没;尺度变化与遮挡严重:同一目标在不同帧中尺度差异大,且小目标极易被其他目标遮挡;传统模型的固有缺陷标签分配策略(如ATSS、SimOTA)偏向大目标,小目标的正样本分配不足,导致模型对小目标不敏感;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1186

什么是华为OD?怎么才能通过华为OD机试?华为OD机试怎么刷题?(2024最新华为OD机试E卷更新中)

华为OD是Outsourcing Dispacth模式,是华为和外企德科联合招聘的简称。目前华为大多数是OD招聘。OD模式也是华为提出的一种新的用工形式,每年都会从OD项目挑优秀员工转为正编。所有OD和正式员工一样对待,没有差别,部门平时开会、评审等活动都是一起参加的,是同薪同酬,都是由华为的HR直接定的薪资,看的是我们技术能力。华为是大企业,能到华为上班也是有能力的,每个部门都有好多职位,是金子,在哪都会发光。

KJ.JK 11万+

Django--分页功能

Django--分页功能 需要用到django中的Paginator模块 导入:from django.core.paginator import Paginator 本案例以图书管理为模版 class BorrowBook(models.Model): """ 借出图书查询 """ reader = models.ForeignKey(Reader, on_d...

weixin_34221073的博客 136

ArcMap|使用模型构建器将kml文件批量转图层

参考:https://www.jianshu.com/p/6de18f846024 第一步:打开模型构建器,拖入kml转图层工具 第二步:插入文件迭代器 第三步:双击“迭代文件”,选择kml所在文件夹 第四步:将“File.kml”与“KML转图层”连接,点击“输入KML文件” 第五步:双击“KML转图层”,更改输出位置,输出数据名称改为%名称% 第六步:运行模型 得到结果: ...

个人学习笔记 3601

Django分页功能的使用

django提供了分页功能接口,利用Paginator模块实现分页,导入:from django.core.paginator import Paginator 在views.py中添加分页查询方法: from django.core.paginator import Paginator def index(request): #获取请求参数 print("这里是index") page_number = request.GET.get('page',1) limit

weixin_46944979的博客 303

Debezium报错处理系列之二十八: Expiring 1 record(s) for test-ts-0:120001 ms has passed since batch creation

Debezium报错处理系列之二十八: Expiring 1 record(s) for test-ts-0:120001 ms has passed since batch creation

zhengzaifeidelushang的博客 3290

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Django自带分页功能

from django.core.paginator import Paginator, Page View视图里面: def index(request): current_page = request.GET.get('page') user_list = models.UserInfo.objects.all() paginator = Paginator(user...

weixin_38894162的博客 652

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Django10-1.django分页功能

Djnago——分页功能 文章目录Djnago——分页功能四、准备工作五、 自写分页功能1. 通过视图实现分页功能2. 实现分页模板3. 实现页码部分 本文接上文 分页功能是每个网站的必选,为什么要有分页?因为后台的数据是非常大量的,如果一次性就给前台,先不说带宽问题导致的传送时间问题,且说用户是否会有这个耐心全看完?如果看到第一个就不看了,后面的都是一些无用的数据即浪费服务器资源也增长了用户等待的时间,缺少用户体验。因此分页功能能很好解决这个问题,通过分页,我们可以确定一个页面有多少数据,然后更具总数据就

胖大xian 459

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

django 之分页功能

Django提供了一个新的类来帮助你管理分页数据,这个类存放在django/core/paginator.py.它可以接收列表、元组或其它可迭代的对象。基本语法12345678910class Paginator(object):     def __init__(self, object_list, per_page, orphans=0,                 allow_empty...

weixin_42077001的博客 353

使用Django实现分页功能

上一个博客写了个简单的留言板,如果数据量太多的话在一页显示就不那么友好了,本文就是做一个分页显示。代码在上一篇的基础上修改。导入分页模块并修改views#只需修改index函数即可def index(request): messages = models.Message.objects.all() #获取全部数据 limit = 10 paginator = Paginat

Yort 5276

Django分页功能的设计

头一次接触到django-pure-pagination这个第三方库,真的带来了巨大的方便,阅读Github教程学习过后,让自己少写了很多代码,谨此写篇博客加深印象,欢迎大家观看学习一起进步。 django-pure-pagination的强大之处就在于能够提供高级分页功能,并于基于Django核心分页模块的现有代码完全兼容(也就是说不需要为了使用这个库而重写分页代码!) 本文参考GitHub:h...

Rapzhang 278

Django Paginator实现分页功能的完整案例

本教程详细演示了如何使用Django的Paginator组件实现数据分页功能。

YAnt的博客 779

Django分页 搜索功能的实现

你可以在视图函数中使用 Django 的内置标签 form 来生成一个表单,然后在视图函数中处理这个表单。

yolo2016的博客 455
上一篇: Django 2.0及以上版本的admin无法显示图片问题
下一篇: ff
PyTtCcMm
博客等级 码龄8年 21粉丝 22原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值