三步实现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中enumerate函数用法实例分析
May 20 Python
Python基本语法经典教程
Mar 11 Python
解析Mac OS下部署Pyhton的Django框架项目的过程
May 03 Python
Python实现的选择排序算法示例
Nov 29 Python
Django 使用Ajax进行前后台交互的示例讲解
May 28 Python
Selenium元素的常用操作方法分析
Aug 10 Python
对python中矩阵相加函数sum()的使用详解
Jan 28 Python
Python使用dict.fromkeys()快速生成一个字典示例
Apr 24 Python
关于pandas的离散化,面元划分详解
Nov 22 Python
使用TensorFlow-Slim进行图像分类的实现
Dec 31 Python
pytorch: Parameter 的数据结构实例
Dec 31 Python
python百行代码实现汉服圈图片爬取
Nov 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 eval函数使用介绍
2013/12/08 PHP
初识Laravel
2014/10/30 PHP
php 数组随机取值的简单实例
2016/05/23 PHP
Laravel 5.5 异常处理 &amp; 错误日志的解决
2019/10/17 PHP
匹配任意字符的正则表达式写法
2010/04/29 Javascript
javascript倒计时功能实现代码
2012/06/07 Javascript
JS加jquery简单实现标签元素的显示或隐藏
2013/09/23 Javascript
javascript生成不重复的随机数
2015/07/17 Javascript
js实现将选中值累加到文本框的方法
2015/08/12 Javascript
使用JavaScript和CSS实现文本隔行换色的方法
2015/11/04 Javascript
Actionscript与javascript交互实例程序(修改)
2016/09/22 Javascript
Vue数据驱动模拟实现2
2017/01/11 Javascript
jQuery页面弹出框实现文件上传
2017/02/09 Javascript
JavaScript的继承实现小结
2017/05/07 Javascript
vue中v-for加载本地静态图片方法
2018/03/03 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
2018/08/10 Javascript
为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
2019/09/29 Javascript
javascript实现打砖块小游戏(附完整源码)
2020/09/18 Javascript
[56:47]Ti4 循环赛第三日 iG vs Liquid
2014/07/12 DOTA
[03:44]2014DOTA2国际邀请赛 71专访:DK战队赛前讨论视频遭泄露
2014/07/13 DOTA
如何在Python中编写并发程序
2016/02/27 Python
python url 参数修改方法
2018/12/26 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
2019/04/25 Python
美国最大的半成品净菜电商:Blue Apron(蓝围裙)
2018/04/27 全球购物
莫斯科的韩国化妆品店:Sifo
2019/12/04 全球购物
简述网络文件系统NFS,并说明其作用
2016/10/19 面试题
简历自我评价模版
2014/01/31 职场文书
违反校纪校规检讨书
2014/02/15 职场文书
《记金华的双龙洞》教学反思
2014/04/19 职场文书
说明书怎么写
2014/05/06 职场文书
家长会标语
2014/06/24 职场文书
公司委托书格式范本
2014/09/16 职场文书
教师节主持词开场白
2015/05/29 职场文书
博士论文答辩开场白
2015/06/01 职场文书
react antd实现动态增减表单
2021/06/03 Javascript
mysql 体系结构和存储引擎介绍
2022/05/06 MySQL