三步实现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实现从百度API获取天气的方法
Mar 11 Python
Python中的descriptor描述器简明使用指南
Jun 02 Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
Aug 18 Python
Python实现判断给定列表是否有重复元素的方法
Apr 11 Python
python批量赋值操作实例
Oct 22 Python
python实现随机漫步方法和原理
Jun 10 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
Aug 08 Python
Django Docker容器化部署之Django-Docker本地部署
Oct 09 Python
Python3实现mysql连接和数据框的形成(实例代码)
Jan 17 Python
详解tensorflow2.x版本无法调用gpu的一种解决方法
May 25 Python
Python简单实现词云图代码及步骤解析
Jun 04 Python
PyCharm上安装Package的实现(以pandas为例)
Sep 18 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
php-fpm配置详解
2014/02/12 PHP
javascript实现的鼠标链接提示效果生成器代码
2007/06/28 Javascript
Javascript学习笔记9 prototype封装继承
2010/01/11 Javascript
使用jQuery和PHP实现类似360功能开关效果
2014/02/12 Javascript
jQuery学习笔记之jQuery中的$
2015/01/19 Javascript
js+html5操作sqlite数据库的方法
2016/02/02 Javascript
JS闭包、作用域链、垃圾回收、内存泄露相关知识小结
2016/05/16 Javascript
微信小程序 参数传递实例代码
2017/03/20 Javascript
微信小程序使用gitee进行版本管理
2018/09/20 Javascript
ES6入门教程之let、const的使用方法
2019/04/13 Javascript
layer.alert自定义关闭回调事件的方法
2019/09/27 Javascript
JavaScript中ES6规范中let和const的用法和区别
2020/08/06 Javascript
对Python新手编程过程中如何规避一些常见问题的建议
2015/04/01 Python
Python中的super用法详解
2015/05/28 Python
python自动12306抢票软件实现代码
2018/02/24 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
2018/04/26 Python
python保存网页图片到本地的方法
2018/07/24 Python
python2.7实现邮件发送功能
2018/12/12 Python
Python 判断图像是否读取成功的方法
2019/01/26 Python
完美解决Python matplotlib绘图时汉字显示不正常的问题
2019/01/29 Python
python+pygame实现坦克大战
2019/09/10 Python
使用PyCharm进行远程开发和调试的实现
2019/11/04 Python
使用Django和Postgres进行全文搜索的实例代码
2020/02/13 Python
Python实现快速大文件比较代码解析
2020/09/04 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
2020/09/24 Python
史上最详细的Python打包成exe文件教程
2021/01/17 Python
css3制作彩色边线3d立体按钮的示例(css3按钮)
2014/05/06 HTML / CSS
CAT鞋英国官网:坚固耐用的靴子和鞋
2016/10/21 全球购物
英国评分最高的女性剃须刀订阅盒:FFS Beauty
2018/01/25 全球购物
描述内存分配方式以及它们的区别
2016/10/15 面试题
幼儿园门卫制度
2014/01/29 职场文书
音乐教学反思
2014/02/02 职场文书
教师校本培训方案
2014/02/26 职场文书
公司承诺书格式
2014/05/21 职场文书
新教师2015年度工作总结
2015/07/22 职场文书
宾馆客房管理制度
2015/08/06 职场文书