一、知识点

参考:https://docs.djangoproject.com/zh-hans/3.0/topics/pagination/

查询出所有省级地区的信息,显示在页面上。

AeroInfo.objects.filter(aParent__isnull = True)

1) 查询出所有省级地区的信息。

2) 按每页显示10条信息进行分页,默认显示第一页的信息,下面并显示出页码。

3) 点击i页链接的时候,就显示第i页的省级地区信息。

from django.core.paginator import Paginator
paginator = Paginator(areas, 10) #按每页10条数据进行分页

Paginator类对象的属性:

属性名 说明
num_pages 返回分页之后的总页数
page_range 返回分页后页码的列表

Paginator类对象的方法:

方法名 说明
page(self, number) 返回第number页的Page类实例对象

Page类对象的属性:

属性名 说明
number 返回当前页的页码
object_list 返回包含当前页的数据的查询集
paginator 返回对应的Paginator类对象

Page类对象的方法:

属性名 说明
has_previous 判断当前页是否有前一页
has_next 判断当前页是否有下一页
previous_page_number 返回前一页的页码
next_page_number 返回下一页的页码

二、分页实例

1)app1/models.py写地区模型类

from django.db import models

class AreaInfo(models.Model):
'''地址模型类'''
# 地区名称
atitle = models.CharField(verbose_name='标题', max_length=20)
# 自关联属性
aParent = models.ForeignKey('self', null=True, blank=True,on_delete=models.CASCADE) def __str__(self):
return self.atitle def title(self):
return self.atitle
title.admin_order_field = 'atitle'
title.short_description = '地区名称' def parent(self):
if self.aParent is None:
return ''
return self.aParent.atitle
parent.short_description = '父级地区名称'

2)app1/views.py写显示函数

from django.shortcuts import render
from django.http import HttpResponse
from app1.models import AreaInfo #导入图片模型类 # /index
def index(request):
return render(request,'app1/index.html') # /show_areas
# 前端访问的时候,需要传递页码
from django.core.paginator import Paginator #【0】导入分页模块
def show_areas(request):
'''分页显示地区'''
areas=AreaInfo.objects.filter(aParent__isnull=True) #【1】过滤父级为空的地区,即省区
paginator=Paginator(areas,10) #【2】把省区进行分页,每页显示10条
page=paginator.page(1) #【3】获取第一页试试
return render(request,'app1/show_areas.html',{'page':page}) # 【4】返回第一页给模板。传所有区数据'areas':areas

3)模板templates/app1/show_areas.html

<!DOCTYPE html>
<html>
<head>
<title>显示地区</title>
</head>
<body> <ul>
{% for a in page %}
<li>{{a.atitle}}</li>
{% endfor %}
</ul> </body>
</html>

4)配置urls.py

from django.contrib import admin
from django.urls import path
from app1 import views urlpatterns = [
path('index/', views.index), path('show_upload/',views.show_upload),# 图片上传页
path('upload_handle/',views.upload_handle),# 图片上传处理页 path('show_areas/',views.show_areas), #显示地区
]

5)效果:http://127.0.0.1:8000/show_areas/

显示第一页十条数据:

北京市

天津市

河北省

山西省

内蒙古自治区

辽宁省

吉林省

黑龙江省

上海市

江苏省

2.2完整的分布实例

1)模板templates/app1/show_areas.html

<!DOCTYPE html>
<html>
<head>
<title>显示地区</title>
</head>
<body>
<ul>
{# 遍历获取每一条数据 #}
{# {% for area in page.object_list %}#}
{% for area in page %}
<li>{{ area.atitle }}</li>
{% endfor %}
</ul>
{# 判断是否有上一页 #}
{% if page.has_previous %}
<a href="/show_areas{{ page.previous_page_number }}">&lt;上一页</a>
{% endif %} {# 遍历显示页码的链接 #}
{% for pindex in page.paginator.page_range %}
{# 判断是否是当前页 #}
{% if pindex == page.number %}
{{ pindex }}
{% else %}
<a href="/show_areas{{ pindex }}">{{ pindex }}</a>
{% endif %}
{% endfor %} {# 判断是否有下一页 #}
{% if page.has_next %}
<a href="/show_areas{{ page.next_page_number }}">下一页&gt;</a>
{% endif %}
</ul> </body>
</html>

2)app1/views.py

from django.shortcuts import render
from django.http import HttpResponse
from project1.settings import MEDIA_ROOT #导入上传文件保存路径 或 from django.conf import settings
from app1.models import PicTest,AreaInfo #导入图片模型类 # /index
def index(request):
return render(request,'app1/index.html') # /show_areas
# 前端访问的时候,需要传递页码pindex
from django.core.paginator import Paginator #【0】导入分页模块
def show_areas(request,pindex):
'''分页显示地区'''
# 1.查询出所有省级地区的信息
areas = AreaInfo.objects.filter(aParent__isnull=True)
# 2. 分页,每页显示10条
paginator = Paginator(areas, 10) # 3. 获取第pindex页的内容
if pindex == '':
# 默认取第一页的内容
pindex = 1
else:
pindex = int(pindex)
# page是Page类的实例对象
page = paginator.page(pindex)
return render(request,'app1/show_areas.html',{'page':page}) # 【4】返回第一页给模板。

3)配置urls.py

from django.contrib import admin
from django.urls import path,re_path
from app1 import views urlpatterns = [
path('index/', views.index), path('show_upload/',views.show_upload),# 图片上传页
path('upload_handle/',views.upload_handle),# 图片上传处理页 #path('show_areas/',views.show_areas), #显示地区 re_path(r'show_areas(?P<pindex>\d*)', views.show_areas), # 分页
]

效果:http://127.0.0.1:8000/show_areas



Django(二十)分页:的更多相关文章

  1. python运维开发(二十)----models操作、中间件、缓存、信号、分页

    内容目录 select Form标签数据库操作 models操作F/Q models多对多表操作 Django中间件 缓存 信号 分页 select Form标签补充 在上一节中我们可以知道Form标 ...

  2. {Django基础十之Form和ModelForm组件}一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 ModelForm

    Django基础十之Form和ModelForm组件 本节目录 一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 Model ...

  3. 第三百二十节,Django框架,生成二维码

    第三百二十节,Django框架,生成二维码 用Python来生成二维码,需要qrcode模块,qrcode模块依赖Image 模块,所以首先安装这两个模块 生成二维码保存图片在本地 import qr ...

  4. Django(十四)分页器(paginator)及自定义分页D

    http://www.mamicode.com/info-detail-1724597.html http://www.cnblogs.com/wupeiqi/articles/5246483.htm ...

  5. Bootstrap <基础二十九>面板(Panels)

    Bootstrap 面板(Panels).面板组件用于把 DOM 组件插入到一个盒子中.创建一个基本的面板,只需要向 <div> 元素添加 class .panel 和 class .pa ...

  6. Bootstrap <基础二十八>列表组

    列表组.列表组件用于以列表形式呈现复杂的和自定义的内容.创建一个基本的列表组的步骤如下: 向元素 <ul> 添加 class .list-group. 向 <li> 添加 cl ...

  7. Bootstrap <基础二十六>进度条

    Bootstrap 进度条.在本教程中,你将看到如何使用 Bootstrap 创建加载.重定向或动作状态的进度条. Bootstrap 进度条使用 CSS3 过渡和动画来获得该效果.Internet ...

  8. Bootstrap <基础二十五>警告(Alerts)

    警告(Alerts)以及 Bootstrap 所提供的用于警告的 class.警告(Alerts)向用户提供了一种定义消息样式的方式.它们为典型的用户操作提供了上下文信息反馈. 您可以为警告框添加一个 ...

  9. Bootstrap<基础二十四> 缩略图

    Bootstrap 缩略图.大多数站点都需要在网格中布局图像.视频.文本等.Bootstrap 通过缩略图为此提供了一种简便的方式.使用 Bootstrap 创建缩略图的步骤如下: 在图像周围添加带有 ...

随机推荐

  1. 老段带你学鸟哥Linux视频教程 包含基础班+提高班

    老段带你学鸟哥Linux视频教程 包含基础班+提高班,附带pdf文档. 目录结构如下: 目录:/-老段带你学鸟哥Linux视频教程 [.9G] ┣━━老段带你学鸟哥-服务器篇 [1009.4M] ┃ ...

  2. python opencv:使用鼠标当做画笔

    鼠标事件 import cv2 events=[i for i in dir(cv2) if 'EVENT'in i] print events 双击画圆圈 import cv2 import num ...

  3. python opencv:摄像头捕获图像

  4. Codeforce 977E Cyclic Components

    dfs判断图的连通块数量~ #include<cstdio> #include<algorithm> #include<vector> #include<cs ...

  5. mysql修改字符集为utf8

    https://zhidao.baidu.com/question/1642165712897935220.html

  6. Python学习第二十八课——Django(urls)

    Django框架中的urls配置: 首先通过pycharm创建一个Django项目: 例如要写blog的功能:则在digango_lesson中的urls代码如下: """ ...

  7. Update(Stage4):scala补充知识

    1.惰性加载: 在企业的大数据开发中,有时候会编写非常复杂的SQL语句,这些SQL语句可能有几百行甚至上千行.这些SQL语句,如果直接加载到JVM中,会有很大的内存开销.如何解决? 当有一些变量保存的 ...

  8. 2018 最新注册码【激活码】、在线激活 pycharm 完整方法(亲测有效)【2018.06.01 重大更新!!!!】

    2018-06-01修改如下: 原来方法的第二种还是有效的,操作如下 (1)更新hosts文件(可以直接下载,然后解压缩) host文件地址 hosts文件,在windows中的地址为: 替换host ...

  9. Vue项目的准备

    1.下载nodejs 检查是否安装成功 2.使用gitee作为线上仓库 3.使用脚手架工具--命令行工具 能在8080里显示出以下画面即为成功

  10. [原]用SQL比较两张结构完全相同的表数据

    前几天面试遇到一个比较有意思的问题,就是有两张结构完全相同的表A和B,但是这两张表属于不同的业务流程,经过一段时间后发现两张表的数据不能完全匹配,有可能A比B多,也可能B比A多,或者两种可能同时存在, ...