三步实现Django Paginator分页的方法

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>

四、最终显示效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Django原生sql也能使用Paginator分页的示例代码

    django-pagination这是一个python包,来自github上的一个项目,很容易用. 不过这是一个懒人工具,好吧(工具理性).不过当一个页面有多处需要采用分页的话,就行不通了,要么修改django-pagination的源码,改变它的url指向,不过我没研究,当工程涉及到迁移时,要知道要安装各种东西本来就是个缺点,还要再修改源码,那就得不偿失.因而转战django自带的分页插件--Paginator. Paginator其实只需要实现两个方法`count`和`__getslice_

  • Django的分页器实例(paginator)

    先导入模块: from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger 分页器paginator 下面的所有方法: book_list=Book.objects.all() paginator = Paginator(book_list, 10) #实例化出一个对象 print("count:",paginator.count) #数据总数 print("num_pages",p

  • 三步实现Django Paginator分页的方法

    Django提供了一个新的类来帮助管理分页数据,这个类存放在django/core/paginator.py.它可以接收列表.元组或其它可迭代的对象.本文将分三步介绍Django Paginator 分页的实现步骤 一.通过模型创建Subject Django models from django.db import models class Subject(models.Model): """学科""" no = models.AutoFiel

  • django实现分页的方法

    本文实例讲述了django实现分页的方法.分享给大家供大家参考.具体如下: Python代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- # Create your views here. from django.shortcuts import render_to_response from winlog.log_dj.models import Winlog from django.core.paginator import Pagina

  • 使用ehcache三步搞定springboot缓存的方法示例

    本次内容主要介绍基于Ehcache 3.0来快速实现Spring Boot应用程序的数据缓存功能.在Spring Boot应用程序中,我们可以通过Spring Caching来快速搞定数据缓存.接下来我们将介绍如何在三步之内搞定Spring Boot缓存. 1. 创建一个Spring Boot工程并添加Maven依赖 你所创建的Spring Boot应用程序的maven依赖文件至少应该是下面的样子: <?xml version="1.0" encoding="UTF-8

  • Django实现快速分页的方法实例

    前言 本文主要给大家介绍了关于Django快速分页的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 分页 在web开发中,对大量的商品进行分页显示,是常见的需求,django对分页直接提供了现成的函数,让我们的开发更为快速便捷... 动图_Django快速分页 示例代码: 在后端(视图函数中) from django.shortcuts import render from .models import ShowMyComputer # 引入方法 from djang

  • Bootstrap Paginator分页插件使用方法详解

    最近做的asp.netMVC项目中需要对数据列表进行分类,这个本来就是基于bootstrap开发的后台,因此也就想着bootstrap是否有分页插件呢,或者说是基于jquery支持的分页功能,这样整体的网站后台风格便能够统一,又不用自己去写一套分页的功能. 首先便是要下载Bootstrap Paginator了,下载地址:Bootstrap Paginator分页插件 首先视图的上面应该需要引入js和css文件,主要有三个文件,分别是bootstrap的css,jquery以及Paginator

  • Django前端BootCSS实现分页的方法

    通过使用bootstrap框架,并配合Django自带的Paginator分页组件即可实现简单的分页效果. 1.创建MyWeb项目 python manage.py startapp MyWeb 2.修改settings.py配置文件,导入我们的app的名字,去掉csrf这个选项 # 屏蔽一项 MIDDLEWARE = [ #'django.middleware.csrf.CsrfViewMiddleware' ] # 新增一项 TEMPLATES = [ 'MyWeb.apps.MywebCo

  • 在PyCharm中三步完成PyPy解释器的配置的方法

    介绍方法之前,我们先说说Python的解释器,由于Python是动态编译的语言,和C/C++.Java或者Kotlin等静态语言不同,它是在运行时一句一句代码地边编译边执行的,而Java是提前将高级语言编译成了JVM字节码,运行时直接通过JVM和机器打交道,所以进行密集计算时运行速度远高于动态编译语言. 但是根据二八定律(帕累托法则),有80%的计算资源只被20%的程序所使用,因此在大部分情况下,原生的CPython解释器已经足够满足日常编程,加上很多科学计算库底层都是C/C++写的,一般不会用

  • Django自定义分页效果

    分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应该显示在页面上的数据在数据库表中的起始位置. 确定分页需求: 1. 每页显示的数据条数 2. 每页显示页号链接数 3. 上一页和下一页 4. 首页和末页 效果图: 首先,利用django内置的分页功能,写分页类: from django.core.paginator import Paginator, Page # 导入django分页模块 class PageInfo(object): def __init__(self

  • Django1.11自带分页器paginator的使用方法

    本文实例为大家分享了Django1.11自带分页器Django的具体使用方法,供大家参考,具体内容如下 接下来我编写一个 views ,名classify. classify,将模拟请求购物网站的分类产品.并分页返回数据.完成如下任务: 1.接受两个参数,type,page."type":为请求的购物网站产品类别,如 0代表热门.1代表 家居< 2.分类找到产品.分页返回. 为了方便将要传递的参数直接加载URL中.如:127.0.0.1:8000/classify/0/1/  

随机推荐