Django——Paginator分页功能练习
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分页功能练习的更多相关文章
- Django 之 Paginator 分页功能
Django Paginator Django 分页官方文档 https://docs.djangoproject.com/en/1.10/topics/pagination/ 此分页方法没有限制显 ...
- Django之分页功能
Django提供了一个新的类来帮助你管理分页数据,这个类存放在django/core/paginator.py.它可以接收列表.元组或其它可迭代的对象. 基本语法 class Paginator(ob ...
- Django 实现分页功能(django 2.2.7 python 3.7.5 )
Django 自带名为 Paginator 的分页工具, 方便我们实现分页功能.本文就讲解如何使用 Paginator 实现分页功能. 一. Paginator Paginator 类的作用是将我们需 ...
- WEB框架之Django实现分页功能
一 Paginator分页器 1 首先在数据库中生成大量数据 def index(request) book_list = [] for i in rang(1000) book = Book(tit ...
- django 实现分页功能
分页效果: 视图代码: # -*- coding: utf-8 -*- from django.shortcuts import render,get_object_or_404 from djang ...
- django 添加分页功能的包
Django pagination based upon the core pagination module
- Django学习笔记(12)——分页功能
这一篇博客记录一下自己学习Django中分页功能的笔记.分页功能在每个网站都是必要的,当页面因需要展示的数据条目过多,导致无法全部显示,这时候就需要采用分页的形式进行展示. 分页在网站随处可见,下面展 ...
- Django—自定义分页
分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应该显示在页面上的数据在数据库表中的起始位置. 确定分页需求: 1. 每页显示的数据条数 2. 每页显示页号链接数 3. 上一页 ...
- Django2.1中的分页功能详解
django的分页功能类将我们常用的多种方法均封装在Paginator类,根据这些方法我们均可深度定制我们的分页功能. 首先来看看[Paginator] 类的构造方法: class Paginator ...
随机推荐
- Thinkphp 分页应用
$Table = M('Table'); $count = $Table ->where()->count(); $Page = new \Think\Page($count ...
- DS1515+
DS1515+ 2021年05月02日 0 2.4k aahk DS1515+ 2021年05月02日 这篇文章用于记录.改进.提高.分享我在使用群晖DS1515+网络存储服务器过程中的具体操作. ...
- DC-6 靶机渗透测试
DC-6 渗透测试 冲冲冲,好好学习 . 收获总结写在文末. 操作机:kali 172.66.66.129 靶机:DC-4 172.66.66.136 网络模式:NAT 上来一波 netdiscove ...
- SQL语句(二)数据排序和单行函数
目录 一.排序查询 1. 基本排序 2. 多条件排序 二.单行函数 调用方法 字符函数 ①LENGTH函数 ②CONCAT函数 ③upper 和 lower ④substr ⑤instr ⑥trim ...
- 2020年度钻石C++C学习笔记(3)--《博学谷》
1.Unix/Linux操作系统介绍 1.1 操作系统的作用 1.1.1 操作系统的目标 l 方便:使计算机系统易于使用 l 有效:以更有效的方式使用计算机系统资源 l 扩展:方便用户有效开发.测试和 ...
- Android源码解析——Handler、Looper与MessageQueue
本文的目的是来分析下 Android 系统中以 Handler.Looper.MessageQueue 组成的异步消息处理机制,通过源码来了解整个消息处理流程的走向以及相关三者之间的关系 需要先了解以 ...
- SpringBoot报错:Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
Spring Boot报错:Error starting ApplicationContext. To display the conditions report re-run your applic ...
- Numpy数组的组合与分割详解
在介绍数组的组合和分割前,我们需要先了解数组的维(ndim)和轴(axis)概念. 如果数组的元素是数组,即数组嵌套数组,我们就称其为多维数组.几层嵌套就称几维.比如形状为(a,b)的二维数组就可以看 ...
- Golang语言系列-05-数组和切片
数组和切片 数组 概念 数组是同一种数据类型元素的集合:数组的长度必须是常量,并且长度是数组类型的一部分,一旦定义,长度不能变 例如:[5]int 和 [10]int 是不同的数组类型 使用时可以修改 ...
- NOIP 模拟 $36\; \rm Cicada 拿衣服$
题解 \(by\;zj\varphi\) 发现右端点固定时,左端点的 \(min-max\) 单调递减,且对于 \(or\) 和 \(and\) 相减,最多有 \(\rm2logn\)个不同的值,且相 ...