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 ...
随机推荐
- 理清 UT、UTC、GMT和CST
平时各种时间标准简写绕得不明不白,查一下整理在这里. IAT: International Atomic Time, 原子时.又称国际原子时,是一种通过原子钟得到的时间标准,原子钟是世界上已知最准确的 ...
- php 随机生成字符串
private function createNonceStr($length = 16) { $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJK ...
- 🏆【Java技术专区】「探针Agent专题」Java Agent探针的技术介绍(1)
前提概要 Java调式.热部署.JVM背后的支持者Java Agent: 各个 Java IDE 的调试功能,例如 eclipse.IntelliJ : 热部署功能,例如 JRebel.XRebel. ...
- HashMap的转化时机
HashMap的转化时机 /** * 使用红黑树(而不是链表)来存放元素.当向至少具有这么多节点的链表再添加元素时,链表就将转换为红黑树. * 该值必须大于2,并且应该至少为8,以便于删除红黑树时转回 ...
- Python: 解析crontab正则,增加+操作
以下是使用Python解析crontab时间格式的一个类, 同时minute和hour支持了 + 的操作. 记录一下备忘. 其中的line参数是字符串分拆后的格式, 包含了 "week&qu ...
- Python RPC 不会?不妨看看这篇文章
1. 前言 大家好,我是安果! RPC,全程为 Remote Procedure Call,是一种进程间的通信方式,它采用「 服务端 / 客户机 」模式,是一种请求响应模型 其中,服务端负责提供服务程 ...
- 为什么crictl和ctr的输出有时不一样
containerd 相比于docker , 多了namespace概念, 每个image和container 都会在各自的namespace下可见, 目前k8s会使用k8s.io 作为命名空间 cr ...
- 科普—为什么要用ECDSA加签及其数学上的验签证明
在上文介绍了ECDSA算法流程及模块划分,为了帮助一些小白弄懂啥是ECDSA,特此开一篇科普博文. 一.首先为啥要进行数字签名? 假设Alice要将一份合同m传输给Bob,合同上附有Alice的电子纸 ...
- Jetpack Compose学习(1)——从登录页开始入门
原文地址:Jetpack Compose学习(1)--从登录页开始入门 | Stars-One的杂货小窝 Jetpack Compose UI在前几天出了1.0正式版,之前一直还在观望,终于是出了正式 ...
- 【Unity3D】Android App Bundle(aab)打包上架Google Play介绍
总体说来,Android App Bundle打包有3种方式,每种方式都有成功上架Google Play进行测试通过,因此实用程度还是挺高的.能够理解以下内容的前提是会打apk包,知道如何生成Asse ...