三步实现Django Paginator分页的方法


Posted in Python onJune 11, 2019

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 }}" rel="external nofollow" aria-label="Previous">
                <span aria-hidden="true">«</span>
              </a>
            </li>
            {% endif %}
            <!— 分页功能显示页码的中间部分代码-->
            {% for page_num in subject_list.paginator.page_range %}
              {% if page_num == subject_list.number %}
                <li class="active">
                  <a href="#" rel="external nofollow" >
                    {{ page_num }}
                    <span class="sr-only">(current)</span>
                  </a>
                </li>
              {% else %}
                <li>
                  <a href="?page={{ page_num }}" rel="external nofollow" >{{ 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 }}" rel="external nofollow" aria-label="last">
                <span aria-hidden="true">»</span>
              </a>
            </li>
            {% endif %}
          </ul>
        </nav>
</div>

四、最终显示效果

三步实现Django Paginator分页的方法

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解Python发送邮件实例
Jan 10 Python
Python 操作MySQL详解及实例
Apr 30 Python
简单谈谈python基本数据类型
Sep 26 Python
Python+OpenCV实现图像融合的原理及代码
Dec 03 Python
解决pycharm工程启动卡住没反应的问题
Jan 19 Python
Python中dict和set的用法讲解
Mar 28 Python
Python向excel中写入数据的方法
May 05 Python
对python tkinter窗口弹出置顶的方法详解
Jun 14 Python
Python将string转换到float的实例方法
Jul 29 Python
Python实现验证码识别
Jun 15 Python
python实现简单遗传算法
Sep 18 Python
基于PyInstaller各参数的含义说明
Mar 04 Python
python-tkinter之按钮的使用,开关方法
Jun 11 #Python
人工神经网络算法知识点总结
Jun 11 #Python
解决django后台样式丢失,css资源加载失败的问题
Jun 11 #Python
python实现合并多个list及合并多个django QuerySet的方法示例
Jun 11 #Python
Python GUI编程 文本弹窗的实例
Jun 11 #Python
Python API 自动化实战详解(纯代码)
Jun 11 #Python
Python-while 计算100以内奇数和的方法
Jun 11 #Python
You might like
大师制作的中短波矿石收音机
2020/04/02 无线电
PHP Session变量不能传送到下一页的解决方法
2009/11/27 PHP
解析PHP缓存函数的使用说明
2013/05/10 PHP
Alliance vs AM BO3 第一场2.13
2021/03/10 DOTA
js escape,unescape解决中文乱码问题的方法
2010/05/26 Javascript
JS实现self的resend
2010/07/22 Javascript
理运用命名空间让js不产生冲突避免全局变量的泛滥
2014/06/15 Javascript
jQuery插件实现大图全屏图片相册
2015/03/14 Javascript
基于JS代码实现实时显示系统时间
2016/06/16 Javascript
JavaScript利用闭包实现模块化
2017/01/13 Javascript
去掉vue 中的代码规范检测两种方法(Eslint验证)
2018/03/21 Javascript
jQuery实现输入框的放大和缩小功能示例
2018/07/21 jQuery
jQuery动态生成的元素绑定事件操作实例分析
2019/05/04 jQuery
微信小程序进入广告实现代码实例
2019/09/19 Javascript
jenkins自动构建发布vue项目的方法步骤
2021/01/04 Vue.js
python 快速排序代码
2009/11/23 Python
Python 代码性能优化技巧分享
2012/08/07 Python
连接Python程序与MySQL的教程
2015/04/29 Python
Django中实现点击图片链接强制直接下载的方法
2015/05/14 Python
Python读取Excel的方法实例分析
2015/07/11 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
2019/06/19 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
2020/06/23 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
Matplotlib 绘制饼图解决文字重叠的方法
2020/07/24 Python
Python urlopen()参数代码示例解析
2020/12/10 Python
Python创建简单的神经网络实例讲解
2021/01/04 Python
HTML5 微格式和相关的属性名称
2010/02/10 HTML / CSS
大四自我鉴定范文
2013/10/06 职场文书
物流专业求职计划书
2014/01/10 职场文书
超市创业计划书
2014/09/15 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
幼儿园安全工作总结2015
2015/04/20 职场文书
事业单位岗位说明书
2015/10/08 职场文书
Memcached介绍及php-memcache扩展安装
2021/04/01 PHP
怎么用Python识别手势数字
2021/06/07 Python
Python装饰器详细介绍
2022/03/25 Python