三步实现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采集百度百科的方法
Jun 05 Python
django开发之settings.py中变量的全局引用详解
Mar 29 Python
Python中int()函数的用法浅析
Oct 17 Python
PyQt5打开文件对话框QFileDialog实例代码
Feb 07 Python
Python使用pandas对数据进行差分运算的方法
Dec 22 Python
python进行文件对比的方法
Dec 24 Python
Python设计模式之建造者模式实例详解
Jan 17 Python
Python函数返回不定数量的值方法
Jan 22 Python
在Python IDLE 下调用anaconda中的库教程
Mar 09 Python
Python无损压缩图片的示例代码
Aug 06 Python
使用Python判断一个文件是否被占用的方法教程
Dec 16 Python
python链表类中获取元素实例方法
Feb 23 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初学者写及时补给skype用户充话费的小程序
2008/11/02 PHP
php FPDF类库应用实现代码
2009/03/20 PHP
PHP导出MySQL数据到Excel文件(fputcsv)
2011/07/03 PHP
dedecms中使用php语句指南
2014/11/13 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
2015/11/04 PHP
PHP仿微信发红包领红包效果
2016/10/30 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
[原创]站长必须要知道的javascript广告代码
2007/05/30 Javascript
js函数排序的实例代码
2013/07/01 Javascript
jQuery焦点图切换特效插件封装实例
2013/08/18 Javascript
js判断某个方法是否存在实例代码
2015/01/10 Javascript
javascript正则表达式中的replace方法详解
2015/04/20 Javascript
在Javascript中处理字符串之big()方法的使用
2015/06/08 Javascript
jQuery基于ajax实现星星评论代码
2015/08/07 Javascript
基于jQuery实现放大镜特效
2020/10/19 Javascript
浅谈javascript中的Function和Arguments
2016/08/30 Javascript
JS实现“隐藏与显示”功能(多种方法)
2016/11/24 Javascript
微信小程序多张图片上传功能
2017/06/07 Javascript
浅谈vue加载优化策略
2019/03/19 Javascript
vue 需求 data中的数据之间的调用操作
2020/08/05 Javascript
python解析json实例方法
2013/11/19 Python
完美解决Python2操作中文名文件乱码的问题
2017/01/04 Python
详谈pandas中agg函数和apply函数的区别
2018/04/20 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
Python查找最长不包含重复字符的子字符串算法示例
2019/02/13 Python
详解python常用命令行选项与环境变量
2020/02/20 Python
python中Django文件上传方法详解
2020/08/05 Python
如何编写python的daemon程序
2021/01/07 Python
西班牙英格列斯百货法国官网:El Corte Inglés法国
2017/07/09 全球购物
数据库面试要点基本概念
2013/10/31 面试题
音乐学院硕士生的自我评价分享
2013/11/01 职场文书
秋季运动会稿件
2014/01/30 职场文书
实现中国梦思想汇报2014
2014/09/13 职场文书
2007年老电脑安装win11会怎么样? 网友实测win11在老电脑运行良好
2021/11/21 数码科技
Redis官方可视化工具RedisInsight安装使用教程
2022/04/19 Redis
本地搭建minio文件服务器(使用bat脚本启动)的方法
2022/07/15 Servers