三步实现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实现k均值算法示例(k均值聚类算法)
Mar 16 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
May 02 Python
python 接收处理外带的参数方法
Dec 03 Python
对python的unittest架构公共参数token提取方法详解
Dec 17 Python
解决python tkinter界面卡死的问题
Jul 17 Python
Python进程间通信 multiProcessing Queue队列实现详解
Sep 23 Python
Python算法的时间复杂度和空间复杂度(实例解析)
Nov 19 Python
Django 设置多环境配置文件载入问题
Feb 25 Python
Python新手如何理解循环加载模块
May 29 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
Jun 17 Python
pandas.DataFrame.drop_duplicates 用法介绍
Jul 06 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
Jan 29 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
德生PL450的电路分析和低放电路的改进办法
2021/03/02 无线电
PHP mb_convert_encoding文字编码的转换函数介绍
2011/11/10 PHP
javascript attachEvent和addEventListener使用方法
2009/03/19 Javascript
jquery 学习笔记一
2010/04/07 Javascript
js实现省市联动效果的简单实例
2014/02/10 Javascript
动态加载js、css等文件跨iframe实现
2014/02/24 Javascript
jqTransform美化表单
2015/10/10 Javascript
深入浅析AngularJS中的module(模块)
2016/01/04 Javascript
AngularJS 整理一些优化的小技巧
2016/08/18 Javascript
jQuery事件用法详解
2016/10/06 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
2017/01/19 Javascript
Angular.js自定义指令学习笔记实例
2017/02/24 Javascript
vue中如何引入jQuery和Bootstrap
2017/04/10 jQuery
微信小程序 action-sheet 反馈上拉菜单简单实例
2017/05/11 Javascript
详解js的作用域、预解析机制
2018/02/05 Javascript
使用Vue构建可重用的分页组件
2018/03/26 Javascript
在Python中使用sort()方法进行排序的简单教程
2015/05/21 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
python3下载抖音视频的完整代码
2019/06/05 Python
Python数据类型之列表和元组的方法实例详解
2019/07/08 Python
numpy:找到指定元素的索引示例
2019/11/26 Python
wxpython多线程防假死与线程间传递消息实例详解
2019/12/13 Python
Python web如何在IIS发布应用过程解析
2020/05/27 Python
Python类及获取对象属性方法解析
2020/06/15 Python
美国克罗格超市在线购物:Kroger
2019/06/21 全球购物
戛纳奢侈品商店:Jacques Loup法国
2019/11/04 全球购物
PPP协议组成及简述协议协商的基本过程
2015/05/28 面试题
大学生优秀的自我评价分享
2013/10/22 职场文书
商业街策划方案
2014/05/31 职场文书
卖房授权委托书样本
2014/10/05 职场文书
党的群众路线教育实践活动个人整改措施落实情况
2014/11/04 职场文书
民主评议党员个人自我评价
2015/03/03 职场文书
2015年七七事变78周年纪念活动方案
2015/05/06 职场文书
JVM上高性能数据格式库包Apache Arrow入门和架构详解(Gkatziouras)
2021/05/26 Servers
浅析CSS在DevTools 中架构演变
2021/10/05 HTML / CSS
pandas中对文本类型数据的处理小结
2021/11/01 Python