1、路由urls.py

from django.contrib import admin
from django.urls import path
from app01.views import index urlpatterns = [
path('admin/', admin.site.urls),
path('index/',index)
]

  

2、数据库表模型models.py

from django.db import models

# Create your models here.

class Book(models.Model):
name = models.CharField(max_length=100)
author = models.CharField(max_length=20)
price = models.IntegerField()
dsp = models.CharField(max_length=100)

  

3、数据库配置settings.py

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '127.0.0.1',
'PORT': 3306,
'USER': 'root',
'PASSWORD': '1',
'NAME': 'demo'
}
}

  

4、视图函数views.py

from django.shortcuts import render
from app01.models import Book
from django.core.paginator import Paginator #导入Paginator分页器 def index(request): book_all_list = Book.objects.all() #获取所有的书籍数据
p = Paginator(book_all_list,15) #实例化分页对象 page = request.GET.get('page',1) #获取GET方法传递过来的页码数,没有则默认为 1
current_page = int(page) #传过来的page是一个字符串,需要转换成int类型 book_object = p.page(current_page) #获取第current_page页的对象
book_list = book_object.object_list #获取第current_page页的对象的元素列表 return render(request,'index.html',{'book_list': book_list,'p': p,'book_object': book_object})

  

5、前端页面index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>测试</title>
<style>
.content{
width: 100%;
}
.tb1{
width: 80%;
margin-left: 100px;
}
</style>
</head>
<body>
<div class="content">
<table border="1px" class="tb1">
<tr>
<th>序号</th>
<th>书名</th>
<th>作者</th>
<th>价格</th>
<th>描述</th>
</tr>
{# 遍历展示当前页的数据 #}
{% for book in book_list %}
<tr>
<td>{{ book.id }}</td>
<td>{{ book.name }}</td>
<td>{{ book.author }}</td>
<td>{{ book.price }}</td>
<td>{{ book.dsp }}</td>
</tr>
{% endfor %}
</table>
</div>
<div style="margin-left: 100px;margin-top: 20px;">
{# 如果当前页有上一页,则可以通过上一页发送GET请求传递page参数,需要从views中传入当前页的对象book_object #}
{% if book_object.has_previous %}
<a href="/index/?page={{ book_object.previous_page_number }}">上一页</a>
{% endif %} {# 获取分页对象的页码列表并遍历,需要从views中传入分页对象p #}
{% for num in p.page_range %}
<a href="/index/?page={{ num }}">{{ num }}</a>
{% endfor %} {# 如果当前页有下一页,则可以通过下一页发送GET请求传递page参数,需要从views中传入当前页的对象book_object #}
{% if book_object.has_next %}
<a href="/index/?page={{ book_object.next_page_number }}">下一页</a>
{% endif %}
</div>
</body>
</html>

  

6、效果(没有添加样式,只是实现功能,所以页面比较丑!!!)

Django——Paginator分页功能练习的更多相关文章

  1. Django 之 Paginator 分页功能

    Django Paginator Django 分页官方文档  https://docs.djangoproject.com/en/1.10/topics/pagination/ 此分页方法没有限制显 ...

  2. Django之分页功能

    Django提供了一个新的类来帮助你管理分页数据,这个类存放在django/core/paginator.py.它可以接收列表.元组或其它可迭代的对象. 基本语法 class Paginator(ob ...

  3. Django 实现分页功能(django 2.2.7 python 3.7.5 )

    Django 自带名为 Paginator 的分页工具, 方便我们实现分页功能.本文就讲解如何使用 Paginator 实现分页功能. 一. Paginator Paginator 类的作用是将我们需 ...

  4. WEB框架之Django实现分页功能

    一 Paginator分页器 1 首先在数据库中生成大量数据 def index(request) book_list = [] for i in rang(1000) book = Book(tit ...

  5. django 实现分页功能

    分页效果: 视图代码: # -*- coding: utf-8 -*- from django.shortcuts import render,get_object_or_404 from djang ...

  6. django 添加分页功能的包

    Django pagination based upon the core pagination module

  7. Django学习笔记(12)——分页功能

    这一篇博客记录一下自己学习Django中分页功能的笔记.分页功能在每个网站都是必要的,当页面因需要展示的数据条目过多,导致无法全部显示,这时候就需要采用分页的形式进行展示. 分页在网站随处可见,下面展 ...

  8. Django—自定义分页

    分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应该显示在页面上的数据在数据库表中的起始位置. 确定分页需求: 1. 每页显示的数据条数 2. 每页显示页号链接数 3. 上一页 ...

  9. Django2.1中的分页功能详解

    django的分页功能类将我们常用的多种方法均封装在Paginator类,根据这些方法我们均可深度定制我们的分页功能. 首先来看看[Paginator] 类的构造方法: class Paginator ...

随机推荐

  1. g6踩坑

    1. 当父元素有transform: scale()时,有鼠标定位不准确的问题 // 开启支持css缩放,智能保证基本的准确,很多情况还是有问题 graph.get('canvas').set('su ...

  2. GlassFish 任意文件读取漏洞

    poc https://192.168.49.2:4848/theme/META-INF/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0 ...

  3. 机器学习 - k-means聚类

    k-means简介 k-means是无监督学习下的一种聚类算法,简单说就是不需要数据标签,仅靠特征值就可以将数据分为指定的几类.k-means算法的核心就是通过计算每个数据点与k个质心(或重心)之间的 ...

  4. webRTC的标准与发展

    Web实时通信(WebRTC)是标准,协议和JavaScript API的集合,两者的组合可实现浏览器(对等)之间的对等音频,视频和数据共享.WebRTC无需依赖第三方插件或专有软件,而是将实时通信转 ...

  5. WPF上传图片到服务器文件夹

    1.前端用ListBox加载显示多张图片 1 <ListBox Name="lbHeadImages" Grid.Row="1" ScrollViewer ...

  6. Android开发失业50天,面了10家公司,唯二的offer也主动拒了

    最近在论坛看到这样一个帖子: 坐标深圳. 4 月上旬公司解散.(现在想想好像是假解散,真裁员) 这一个半月以来,从朋友内推,到拉勾.Boss 直聘,再到猎聘.智联招聘. 从开始的精准投递,到后来的海投 ...

  7. 【C++】使用 libass,完成 Direct3D 11 下的字幕渲染

    前言 前段时间曾经写过一个视频播放器:https://www.cnblogs.com/judgeou/p/14746051.html . 然而这个播放器却无法显示出外挂或者内封的字幕,这里要稍微解释一 ...

  8. 代码重构与单元测试——使用“以查询取代临时变量”再次对Statement()方法进行重构(七)

    代码重构与单元测试(一) 代码重构与单元测试--测试项目(二) 代码重构与单元测试--"提取方法"重构(三) 代码重构与单元测试--重构1的单元测试(四) 代码重构与单元测试--对 ...

  9. Reuse Sonar Checkstyle Violation Report for Custom Data Analysis

    Write a violation rules file; Import it into Sonar as a Quality Profile named as "MyRules" ...

  10. Linux文件系统只读 解决方案:

    Linux系统Read-only file system,文件系统只读排查解决方案:文件系统只读机制:当文件系统自身的校验机制发现文件系统存在问题时,为避免文件系统受到进一步的损坏,系统会把文件系统设 ...