三步实现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的源码浅要剖析Python的内存管理
Apr 16 Python
Eclipse中Python开发环境搭建简单教程
Mar 23 Python
Python基于回溯法子集树模板解决取物搭配问题实例
Sep 02 Python
Django使用unittest模块进行单元测试过程解析
Aug 02 Python
Python3从零开始搭建一个语音对话机器人的实现
Aug 23 Python
python的range和linspace使用详解
Nov 27 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
Dec 02 Python
Python语法之精妙的十个知识点(装B语法)
Jan 18 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
May 04 Python
如何完美的建立一个python项目
Oct 09 Python
Python制作简单的剪刀石头布游戏
Dec 10 Python
使用opencv-python如何打开USB或者笔记本前置摄像头
Jun 21 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/03/02 星际争霸
PHP封装的数据库保存session功能类
2016/07/11 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
PHP 自动加载类原理与用法实例分析
2020/04/14 PHP
THREE.JS入门教程(4)创建粒子系统
2013/01/24 Javascript
JavaScript 创建运动框架的实现代码
2013/05/08 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
2014/10/11 Javascript
jQuery中live()方法用法实例
2015/01/19 Javascript
Javascript无参数和有参数类继承问题解决方法
2015/03/02 Javascript
jQuery Easyui Datagrid实现单行的上移下移及保存移动的结果
2016/08/15 Javascript
jQuery复制节点用法示例(clone方法)
2016/09/08 Javascript
浅谈AngularJS中ng-class的使用方法
2016/11/11 Javascript
非常优秀的JS图片轮播插件Swiper的用法
2017/01/03 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
2017/04/11 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
Smartour 让网页导览变得更简单(推荐)
2019/07/19 Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
2019/07/26 Javascript
ES6中Set和Map用法实例详解
2020/03/02 Javascript
Vue vm.$attrs使用场景详解
2020/03/08 Javascript
vue实现打地鼠小游戏
2020/08/21 Javascript
python快速排序代码实例
2013/11/21 Python
Python中的元类编程入门指引
2015/04/15 Python
python中requests小技巧
2017/05/10 Python
Python可变和不可变、类的私有属性实例分析
2019/05/31 Python
python 字典访问的三种方法小结
2019/12/05 Python
Python装饰器实现方法及应用场景详解
2020/03/26 Python
CSS3实现3D翻书效果
2016/06/20 HTML / CSS
Gap加拿大官网:Gap Canada
2017/08/24 全球购物
亿企通软件测试面试题
2012/04/10 面试题
学生的自我鉴定范文
2013/10/24 职场文书
大专生自我鉴定怎么写
2014/09/16 职场文书
单位法定代表人授权委托书
2014/09/20 职场文书
事业单位个人查摆问题及整改措施
2014/10/28 职场文书
岗位聘任协议书
2015/09/21 职场文书
股东出资协议书
2016/03/21 职场文书