三步实现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中使用dom模块生成XML文件示例
Apr 05 Python
Python输出9*9乘法表的方法
May 25 Python
举例讲解Python中的身份运算符的使用方法
Oct 13 Python
Python简单连接MongoDB数据库的方法
Mar 15 Python
使用Python3制作TCP端口扫描器
Apr 17 Python
Python自动发送邮件的方法实例总结
Dec 08 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
Feb 22 Python
详解PyCharm+QTDesigner+PyUIC使用教程
Jun 13 Python
python字符串查找函数的用法详解
Jul 08 Python
python图片合成的示例
Nov 09 Python
详解Python+Selenium+ChromeDriver的配置和问题解决
Jan 19 Python
ubuntu安装jupyter并设置远程访问的实现
Mar 31 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/11/26 PHP
php数组函数序列之array_keys() - 获取数组键名
2011/10/30 PHP
php urlencode()与urldecode()函数字符编码原理详解
2011/12/06 PHP
写出高质量的PHP程序
2012/02/04 PHP
php数字游戏 计算24算法
2012/06/10 PHP
php中instanceof 与 is_a()区别分析
2015/03/03 PHP
jquery获取复选框被选中的值
2014/04/10 Javascript
jQuery自带的一些常用方法总结
2014/09/03 Javascript
js图片跟随鼠标移动代码
2015/11/26 Javascript
基于jQuery实现返回顶部实例代码
2016/01/01 Javascript
Bootstrap 3.x打印预览背景色与文字显示异常的解决
2016/11/06 Javascript
重新认识vue之事件阻止冒泡的实现
2018/08/02 Javascript
JavaScript防止全局变量污染的方法总结
2018/08/02 Javascript
vue-cli3.0使用及部分配置详解
2018/08/29 Javascript
JavaScript实现指定数量的并发限制的示例代码
2020/03/10 Javascript
Vue实现购物车实例代码两则
2020/05/30 Javascript
[48:46]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第二场 11.19
2020/11/19 DOTA
对于Python的Django框架使用的一些实用建议
2015/04/03 Python
Python中unittest模块做UT(单元测试)使用实例
2015/06/12 Python
Python素数检测实例分析
2015/06/15 Python
Python函数式编程指南(四):生成器详解
2015/06/24 Python
python实现C4.5决策树算法
2018/08/29 Python
解决python 自动安装缺少模块的问题
2018/10/22 Python
对python读写文件去重、RE、set的使用详解
2018/12/11 Python
python反编译学习之字节码详解
2019/05/19 Python
python+opencv实现移动侦测(帧差法)
2020/03/20 Python
美国和加拿大房车出售在线分类广告:RVT.com
2018/04/23 全球购物
墨西哥皇宫度假村预订:Palace Resorts
2018/06/16 全球购物
英超联赛的首选足球:Mitre足球
2019/05/06 全球购物
一些网络技术方面的面试题
2014/05/01 面试题
校园安全教育广播稿
2014/02/17 职场文书
《守株待兔》教学反思
2014/03/01 职场文书
先进工作者申报材料
2014/12/23 职场文书
仓库保管员岗位职责
2015/02/09 职场文书
MySQL系列之十五 MySQL常用配置和性能压力测试
2021/07/02 MySQL
使用python创建股票的时间序列可视化分析
2022/03/03 Python