开发者社区> 宜信技术学院> 正文

三步实现Django Paginator 分页

简介: Django提供了一个新的类来帮助管理分页数据,这个类存放在django/core/paginator.py.它可以接收列表、元组或其它可迭代的对象。本文将分三步介绍Django Paginator 分页的实现步骤。
+关注继续查看

Django提供了一个新的类来帮助管理分页数据,这个类存放在django/core/paginator.py.它可以接收列表、元组或其它可迭代的对象。本文将分三步介绍Django Paginator 分页的实现步骤。

一、通过模型创建Subject

Django models

from django.db import models 
class Subject(models.Model):     
    """学科""”     
    no = models.AutoField(primary_key=True, verbose_name="编号")     
    name = models.CharField(max_length=31, verbose_name="名称")     
    intro = models.CharField(max_length=511, verbose_name="介绍")     
    def __str__(self):         
        return self.name     
    
    class Meta:         
        db_table = 'tb_subject’         
        verbose_name_plural = "学科"

二、通过view模块,要呈现到前端的数据

Django view 的配置

from django.shortcuts import render
from django.core.paginator import Paginator, InvalidPage, EmptyPage, PageNotAnInteger
from vote.models import Subject
def show_subject(request):
    """查询学科"""
    #查询Subject 表的所有数据
    subjects = Subject.objects.all().order_by("no”)
    #使用Paginator模块对数据分页,一页5条数据
    paginator = Paginator(subjects, 5)
    #使用request.GET.get()函数获取uri中的page参数的数值
    page = request.GET.get('page')
    try:
        #通过获取上面的page参数,查询此page是否为整数并且是否可用
        subject_obj = paginator.page(page)
    except PageNotAnInteger:
        subject_obj = paginator.page(1)
    except (EmptyPage, InvalidPage):
        subject_obj = paginator.page(paginator.num_pages)
    return render(request, "vote/subject.html", {'subject_list': subject_obj})

三、将view中的数据渲染到前端模版上

前端分页代码块:

<div class="pull-right" style="margin-right: 480px;margin-top: 0px”>
                <!—  分页功能-->
                <nav>
                    <ul class="pagination”>
                        <!—  分页功能前端的方向箭头代码-->
                        {% if subject_list.has_previous %}
                        <li class="enabled">
                            <a href="?page={{ subject_list.previous_page_number }}" aria-label="Previous">
                                <span aria-hidden="true">&laquo;</span>
                            </a>
                        </li>
                        {% endif %}
                        <!—  分页功能显示页码的中间部分代码-->
                        {% for page_num in subject_list.paginator.page_range %}
                            {% if page_num == subject_list.number %}
                                <li class="active">
                                    <a href="#">
                                        {{ page_num }}
                                        <span class="sr-only">(current)</span>
                                    </a>
                                </li>
                            {% else %}
                                <li>
                                    <a href="?page={{ page_num }}">{{ page_num }}
                                        <span class="sr-only">(current)</span>
                                    </a>
                                </li>
                            {% endif %}
                        {% endfor %}
                        <!—  分页功能末端的方向箭头代码-->
                        {% if  subject_list.has_next %}
                        <li class="enabled">
                            <a href="?page={{ subject_list.next_page_number }}" aria-label="last">
                                <span aria-hidden="true">&raquo;</span>
                            </a>
                        </li>
                        {% endif %}
                    </ul>
                </nav>
</div>

四、最终显示效果

157E73AC_2B0D_4915_9DE4_283E35554C4F

(图片来源于网络)

作者:任宏利

来源:宜信技术学院

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Django的Paginator分页器使用示例
Django的Paginator分页器使用示例
52 0
基于python(Django、Mysql)的超市管理系统的设计与实现
Python语言功能强大,可以运用在诸多方面,其中在Web开发方向也有一系列十分成功的应用,同时为了方便开发,提升开发效率出现了一系列的开发框架,其中 Django 就是一个典型的重量级选手,它帮助我们解决了开发中很多问题,比如模板、数据处理等等,这些使得我们只需要使用 Django 就可以完成大多数的开发任务。 数据库采用MySQL,它是一种关系型数据库管理系统,关系数据库将数据保存在不
38 0
运维面试题库之Python+Django
运维面试题库之Python+Django
10142 0
Django框架开发005期 Python调用template模板网页开发调用静态资源
Django框架开发005期 Python调用template模板网页开发调用静态资源
13 0
Django框架开发004期 Python编程调用自定义Django框架template模板网页
Django框架开发004期 Python编程调用自定义Django框架template模板网页
15 0
Django框架开发003期 Python+Django初步自主开发配置和分析网站项目
Django框架开发003期 Python+Django初步自主开发配置和分析网站项目
17 0
Django框架开发002期 Python编程利用PyCharm专业版和社区版开发网站
Django框架开发002期 Python编程利用PyCharm专业版和社区版开发网站
30 0
Django:用于轻松安全 Web 开发的高级 Python Web 框架
Django是一种高级 Python Web 框架,近年来在开发人员中广受欢迎。Django 专注于简单性、安全性和可扩展性,使开发人员可以轻松构建和部署强大的 Web 应用程序。在这份综合指南中,我们将仔细研究是什么让 Django 成为 Web 开发的绝佳选择,并详细探讨其主要特性和功能。
38 0
Prometheus 基于Python Django实现Prometheus Exporter
Prometheus 基于Python Django实现Prometheus Exporter
29 0
Python web框架 之Django + Python3.7 + 集成百度地图【视频讲解】
python集成百度地图 介绍 python集成百度地图demo
115 0
+关注
宜信技术学院
宜信技术学院是宜信旗下的金融科技能力展示与输出平台。通过分享在金融科技领域的开源成果、研发实践促进金融科技生态圈企业创新升级。
文章
问答
视频
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载