三步实现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 httplib,smtplib使用方法
Sep 06 Python
python实现的一个火车票转让信息采集器
Jul 09 Python
python的类变量和成员变量用法实例教程
Aug 25 Python
Pycharm学习教程(4) Python解释器的相关配置
May 03 Python
详谈在flask中使用jsonify和json.dumps的区别
Mar 26 Python
详解将Django部署到Centos7全攻略
Sep 26 Python
python开启debug模式的方法
Jun 27 Python
python实现连连看辅助之图像识别延伸
Jul 17 Python
pycharm解决关闭flask后依旧可以访问服务的问题
Apr 03 Python
Python中三维坐标空间绘制的实现
Sep 22 Python
Python jiaba库的使用详解
Nov 23 Python
http通过StreamingHttpResponse完成连续的数据传输长链接方式
Feb 12 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之APC缓存详细介绍 apc模块安装
2014/01/13 PHP
php基于session实现数据库交互的类实例
2015/08/03 PHP
php抓取网站图片并保存的实现方法
2015/10/29 PHP
PHP仿微信发红包领红包效果
2016/10/30 PHP
php实现的简单多进程服务器类完整示例
2020/02/01 PHP
基于PHP实现用户登录注册功能的详细教程
2020/08/04 PHP
JS如何将数字类型转化为没3个一个逗号的金钱格式
2014/01/27 Javascript
JS比较2个日期间隔的示例代码
2014/04/15 Javascript
jquery+php实现搜索框自动提示
2014/11/28 Javascript
jQuery获得包含margin的outerWidth和outerHeight的方法
2015/03/25 Javascript
使用jQuery实现WordPress中的Ctrl+Enter和@评论回复
2016/05/21 Javascript
js编写三级联动简单案例
2016/12/21 Javascript
原生js实现可拖拽效果
2017/02/28 Javascript
JS实现unicode和UTF-8之间的互相转换互转
2017/07/05 Javascript
webpack 模块热替换原理
2018/04/09 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
2018/06/26 Javascript
详解解决使用axios发送json后台接收不到的问题
2018/06/27 Javascript
vue 使用html2canvas将DOM转化为图片的方法
2018/09/11 Javascript
Python实现输出程序执行进度百分比的方法
2017/09/16 Python
深入了解Python中pop和remove的使用方法
2018/01/09 Python
Python制作简易版小工具之计算天数的实现思路
2020/02/13 Python
django 取消csrf限制的实例
2020/03/13 Python
python 实现分组求和与分组累加求和代码
2020/05/18 Python
python 从list中随机取值的方法
2020/11/16 Python
python爬虫中的url下载器用法详解
2020/11/30 Python
灵活运用CSS3特性绘制简易版围棋效果
2016/09/28 HTML / CSS
Ruby如何实现动态方法调用
2012/11/18 面试题
超市开学活动方案
2014/03/01 职场文书
生物制药专业求职信
2014/03/11 职场文书
公共场所标语
2014/06/30 职场文书
2014年高中教师工作总结
2014/12/19 职场文书
2015年圣诞节活动总结
2015/03/24 职场文书
2015秋季幼儿园开学通知
2015/07/16 职场文书
Python 绘制多因子柱状图
2022/05/11 Python
CSS子盒子水平和垂直居中的五种方法
2022/07/23 HTML / CSS