三步实现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判断字符串是否纯数字的方法
Nov 19 Python
python实现RSA加密(解密)算法
Feb 17 Python
使用python在本地电脑上快速处理数据
Jun 22 Python
Python异常处理操作实例详解
May 10 Python
解决pycharm运行时interpreter为空的问题
Oct 29 Python
python使用pandas处理大数据节省内存技巧(推荐)
May 05 Python
Python获取时间戳代码实例
Sep 24 Python
解决pyCharm中 module 调用失败的问题
Feb 12 Python
python中round函数如何使用
Jun 19 Python
python 多线程死锁问题的解决方案
Aug 25 Python
Python自动化之UnitTest框架实战记录
Sep 08 Python
Pandas中两个dataframe的交集和差集的示例代码
Dec 13 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的ob_start来生成静态页面的方法分析
2011/03/09 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
2018/04/04 PHP
Yii框架的路由配置方法分析
2019/09/09 PHP
PHP程序守护进程化实现方法详解
2020/07/16 PHP
JavaScript 验证浏览器是否支持javascript的方法小结
2009/05/17 Javascript
JQuery开发的数独游戏代码
2010/10/29 Javascript
script标签属性type与language使用选择
2012/12/02 Javascript
IE下JS读取xml文件示例代码
2013/08/05 Javascript
jquery限定文本框只能输入数字(整数和小数)
2016/01/08 Javascript
JS查找字符串中出现次数最多的字符
2016/09/05 Javascript
浅析Node.js:DNS模块的使用
2016/11/23 Javascript
nuxt.js 缓存实践
2018/06/25 Javascript
vue自定义底部导航栏Tabbar的实现代码
2018/09/03 Javascript
JavaScript编写开发动态时钟
2020/07/29 Javascript
pyqt和pyside开发图形化界面
2014/01/22 Python
浅析Python 中整型对象存储的位置
2016/05/16 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
2018/03/19 Python
python3+PyQt5重新实现自定义数据拖放处理
2018/04/19 Python
python 监听salt job状态,并任务数据推送到redis中的方法
2019/01/14 Python
python实现mask矩阵示例(根据列表所给元素)
2020/07/30 Python
python利用tkinter实现图片格式转换的示例
2020/09/28 Python
布局和排版教程 纯css3实现图片三角形排列
2014/10/17 HTML / CSS
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
使用spring mvc+localResizeIMG实现HTML5端图片压缩上传的功能
2016/12/16 HTML / CSS
美国美妆网站:B-Glowing
2016/10/12 全球购物
英国领先的酒类网上商城:TheDrinkShop
2017/03/16 全球购物
土耳其时尚潮流在线购物网站:Trendyol
2017/10/10 全球购物
职专应届生求职信
2013/11/16 职场文书
门卫岗位安全职责
2013/12/13 职场文书
小学教师师德反思
2014/02/03 职场文书
超市开学活动方案
2014/03/01 职场文书
党在我心中的演讲稿
2014/09/13 职场文书
关于成绩下滑的自我检讨书
2014/09/20 职场文书
小学教学工作总结2015
2015/05/13 职场文书
python语言中pandas字符串分割str.split()函数
2022/08/05 Python