三步实现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字符串关键点
Dec 13 Python
Python使用multiprocessing实现一个最简单的分布式作业调度系统
Mar 14 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
May 25 Python
Python SqlAlchemy动态添加数据表字段实例解析
Feb 07 Python
python逐行读写txt文件的实例讲解
Apr 03 Python
Python实现的根据IP地址计算子网掩码位数功能示例
May 23 Python
Python实现的读取/更改/写入xml文件操作示例
Aug 30 Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
Jul 31 Python
Python grequests模块使用场景及代码实例
Aug 10 Python
python 如何将office文件转换为PDF
Sep 22 Python
使用Python爬虫爬取小红书完完整整的全过程
Jan 19 Python
Python使用Beautiful Soup(BS4)库解析HTML和XML
Jun 05 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中使用Oracle数据库(5)
2006/10/09 PHP
php实现执行某一操作时弹出确认、取消对话框
2013/12/30 PHP
php提高网站效率的技巧
2015/09/29 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
2018/10/25 PHP
input按钮的事件处理大全
2010/12/10 Javascript
jquery ui dialog实现弹窗特效的思路及代码
2013/08/03 Javascript
在子窗口中关闭父窗口的一句代码
2013/10/21 Javascript
jQuery控制iFrame(实例代码)
2013/11/19 Javascript
JS如何将数字类型转化为没3个一个逗号的金钱格式
2014/01/27 Javascript
浅谈JavaScript Array对象
2014/12/29 Javascript
javascript生成大小写字母
2015/07/03 Javascript
laypage分页控件使用实例详解
2016/05/19 Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
2016/06/30 Javascript
JavaScript实现的鼠标响应颜色渐变效果完整实例
2017/02/18 Javascript
详解React Native网络请求fetch简单封装
2017/08/10 Javascript
JS实现的冒泡排序,快速排序,插入排序算法示例
2019/03/02 Javascript
nodejs log4js 使用详解
2019/05/31 NodeJs
详解Vue后台管理系统开发日常总结(组件PageHeader)
2019/11/01 Javascript
js实现贪吃蛇小游戏(加墙)
2020/07/31 Javascript
js实现鼠标点击飘爱心效果
2020/08/19 Javascript
python获取当前计算机cpu数量的方法
2015/04/18 Python
TensorFlow实现Batch Normalization
2018/03/08 Python
完美解决Python 2.7不能正常使用pip install的问题
2018/06/12 Python
Python pandas实现excel工作表合并功能详解
2019/08/29 Python
pytorch GAN伪造手写体mnist数据集方式
2020/01/10 Python
python绘图模块之利用turtle画图
2021/02/12 Python
精选鞋类、服装和配饰的全球领先目的地:Bodega
2021/02/27 全球购物
最受欢迎的自我评价
2013/12/22 职场文书
麦当劳辞职信范文
2014/01/18 职场文书
《去年的树》教学反思
2014/04/11 职场文书
怎样写离婚协议书
2014/09/10 职场文书
2014年重阳节敬老活动方案
2014/09/16 职场文书
新手必备Python开发环境搭建教程
2021/05/28 Python
OpenCV-Python实现人脸磨皮算法
2021/06/07 Python
ICOM R71E和R72E图文对比解说
2022/04/07 无线电
基于Python实现西西成语接龙小助手
2022/08/05 Golang