三步实现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 相关文章推荐
可用于监控 mysql Master Slave 状态的python代码
Feb 10 Python
python分割和拼接字符串
Nov 01 Python
python以环状形式组合排列图片并输出的方法
Mar 17 Python
对Python3中的input函数详解
Apr 22 Python
python实现内存监控系统
Mar 07 Python
python三引号输出方法
Feb 27 Python
python读取并定位excel数据坐标系详解
Jun 26 Python
Python多线程爬取豆瓣影评API接口
Oct 22 Python
Python Numpy 自然数填充数组的实现
Nov 28 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
Feb 24 Python
Python 防止死锁的方法
Jul 29 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
Jan 15 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
一个程序下载的管理程序(四)
2006/10/09 PHP
PHP 操作文件的一些FAQ总结
2009/02/12 PHP
PHP中的float类型使用说明
2010/07/27 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
PHP中的自动加载操作实现方法详解
2019/08/06 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
js控制div及网页相关属性的代码
2009/12/19 Javascript
父子窗体间传递JSON格式的数据的代码
2010/12/25 Javascript
给artDialog 5.02 增加ajax get功能详细介绍
2012/11/13 Javascript
js判断FCKeditor内容是否为空的两种形式
2013/05/14 Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
2014/06/01 Javascript
JavaScript 学习笔记之基础中的基础
2015/01/13 Javascript
javascript实现保留两位小数的多种方法
2015/12/18 Javascript
学习掌握JavaScript中this的使用技巧
2016/08/29 Javascript
Vue中fragment.js使用方法详解
2017/03/09 Javascript
React如何将组件渲染到指定DOM节点详解
2017/09/08 Javascript
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
JavaScript中this用法学习笔记
2019/03/17 Javascript
[01:03:31]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第二局
2016/02/26 DOTA
Python实现设置windows桌面壁纸代码分享
2015/03/28 Python
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
python实现微信自动回复及批量添加好友功能
2019/07/03 Python
用Anaconda安装本地python包的方法及路径问题(图文)
2019/07/16 Python
Python垃圾回收机制三种实现方法
2020/04/27 Python
canvas生成带二维码海报的踩坑记录
2019/09/11 HTML / CSS
Linux面试经常问的文件系统操作命令
2016/10/04 面试题
远程研修随笔感言
2014/02/10 职场文书
爱我中华教学反思
2014/04/28 职场文书
推荐信模板
2014/05/09 职场文书
小学教师自我剖析材料
2014/09/29 职场文书
家长通知书家长意见
2014/12/30 职场文书
教代会闭幕词
2015/01/28 职场文书
公司的力量观后感
2015/06/05 职场文书
2016年万圣节活动个人总结
2016/04/05 职场文书
浅谈Python中的正则表达式
2021/06/28 Python
PYTHON InceptionV3模型的复现详解
2022/05/06 Python