三步实现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获取Linux下文件版本信息、公司名和产品名的方法
Oct 05 Python
python根据出生日期获得年龄的方法
Mar 31 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
Nov 05 Python
Python字符串特性及常用字符串方法的简单笔记
Jan 04 Python
python3.5安装python3-tk详解
Apr 26 Python
Python 3.6 -win64环境安装PIL模块的教程
Jun 20 Python
在tensorflow中实现去除不足一个batch的数据
Jan 20 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
May 17 Python
python实现快速文件格式批量转换的方法
Oct 16 Python
python音频处理的示例详解
Dec 23 Python
pandas进行数据输入和输出的方法详解
Mar 23 Python
Python万能模板案例之matplotlib绘制直方图的基本配置
Apr 13 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执行速度全攻略(上)
2006/10/09 PHP
laravel 事件/监听器实例代码
2019/04/12 PHP
一段利用WSH修改和查看IP配置的代码
2008/05/11 Javascript
JavaScript 仿关机效果的图片层
2008/12/26 Javascript
分享10个原生JavaScript技巧
2015/04/20 Javascript
JavaScript中getUTCSeconds()方法的使用详解
2015/06/11 Javascript
JQuery标签页效果的两个实例讲解(4)
2015/09/17 Javascript
关于JSON与JSONP简单总结
2016/08/16 Javascript
浅谈关于.vue文件中style的scoped属性
2017/08/19 Javascript
vue forEach循环数组拿到自己想要的数据方法
2018/09/21 Javascript
Vue+Element实现表格编辑、删除、以及新增行的最优方法
2019/05/28 Javascript
使用webpack搭建vue项目及注意事项
2019/06/10 Javascript
vue iview实现动态新增和删除
2020/06/17 Javascript
[27:39]Ti4 循环赛第二日 LGD vs Fnatic
2014/07/11 DOTA
[55:42]VG vs VGJ.T 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
[36:20]KG vs SECRET 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
通过代码实例展示Python中列表生成式的用法
2015/03/31 Python
Python的Django中django-userena组件的简单使用教程
2015/05/30 Python
利用python发送和接收邮件
2016/09/27 Python
python+opencv实现动态物体识别
2018/01/09 Python
python实现微信远程控制电脑
2018/02/22 Python
利用Python写一个爬妹子的爬虫
2018/06/08 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
2019/02/17 Python
python模拟键盘输入 切换键盘布局过程解析
2019/08/15 Python
Python中BeautifuSoup库的用法使用详解
2019/11/15 Python
Python3将jpg转为pdf文件的方法示例
2019/12/13 Python
Python编程快速上手——强口令检测算法案例分析
2020/02/29 Python
django haystack实现全文检索的示例代码
2020/06/24 Python
pycharm 2020 1.1的安装流程
2020/09/29 Python
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
2016/12/22 HTML / CSS
基于HTML5的齿轮动画特效
2016/02/29 HTML / CSS
南非最大的在线时尚商店:Zando
2019/07/21 全球购物
2014年党员整改措施
2014/10/24 职场文书
国庆节慰问信
2015/02/15 职场文书
婚礼家长致辞
2015/07/27 职场文书
CSS 圆形进度栏
2021/04/06 HTML / CSS