演示环境接上篇django。

说明:

Django提供了一些类,来实现管理数据分页:Paginator对象、Page对象。

其中Paginator类对象介绍如下:

Paginator(列表,int):返回分页对象,参数为列表数据,每面数据的条数;

Paginator类对象属性有:count:对象总数;num_pages:页面总数;page_range:页码列表,从1开始,例如[1, 2, 3, 4];

Paginator类对象方法有:page(num):下标以1开始,如果提供的页码不存在,抛出InvalidPage异常。

Page类对象介绍如下:

Paginator对象的page()方法返回Page对象,不需要手动构造;

Page类对象的属性有:object_list:当前页上所有对象的列表;number:当前页的序号,从1开始;paginator:当前page对象相关的Paginator对象;

Page类对象的方法有:has_next():如果有下一页返回True;has_previous():如果有上一页返回True;has_other_pages():如果有上一页或下一页返回True;next_page_number():返回下一页的页码,如果下一页不存在,抛出InvalidPage异常;previous_page_number():返回上一页的页码,如果上一页不存在,抛出InvalidPage异常;len():返回当前页面对象的个数;迭代页面对象:访问当前页面中的每个对象。

制作实验所需数据,添加mysql数据:> use test3;

> desc bookshop_heroinfo;

---------- --------------- ------ ----- --------- ----------------

| Field    | Type          | Null | Key | Default | Extra          |

---------- --------------- ------ ----- --------- ----------------

| id       | int(11)       | NO   | PRI | NULL    | auto_increment |

| hname    | varchar(10)   | NO   |     | NULL    |                |

| hgender  | tinyint(1)    | NO   |     | NULL    |                |

| hcontent | varchar(1000) | NO   |     | NULL    |                |

| isDelete | tinyint(1)    | NO   |     | NULL    |                |

| book_id  | int(11)       | NO   | MUL | NULL    |                |

---------- --------------- ------ ----- --------- ----------------

6 rows in set (0.01 sec)

> insert into bookshop_heroinfo(hname,hgender,book_id,hcontent,isDelete) values('郭靖',1,1,'降龙十八掌',0),('黄蓉',0,1,'打狗棍法',0),('段誉',1,1,'六脉神剑',0),('虚竹',0,1,'天山六阳掌',0),('王语嫣',1,1,'神仙姐姐',0),('令狐冲',0,1,'孤独九剑',0),('任盈盈',1,1,'弹琴',0),('岳不群',0,1,'华山剑法',0),('东方不败',1,1,'葵花宝典',0),('胡斐',0,1,'胡家刀法',0),('苗若兰',1,1,'黄衣',0),('程灵素',0,1,'医术',0),('袁紫衣',1,1,'六合拳',0);

> select * from bookshop_heroinfo;

---- -------------- --------- ----------------- ---------- ---------

| id | hname        | hgender | hcontent        | isDelete | book_id |

---- -------------- --------- ----------------- ---------- ---------

|  1 | 郭靖         |       1 | 降龙十八掌      |        0 |       1 |

|  2 | 黄蓉         |       0 | 打狗棍法        |        0 |       1 |

|  3 | 段誉         |       1 | 六脉神剑        |        0 |       1 |

|  4 | 虚竹         |       0 | 天山六阳掌      |        0 |       1 |

|  5 | 王语嫣       |       1 | 神仙姐姐        |        0 |       1 |

|  6 | 令狐冲       |       0 | 孤独九剑        |        0 |       1 |

|  7 | 任盈盈       |       1 | 弹琴            |        0 |       1 |

|  8 | 岳不群       |       0 | 华山剑法        |        0 |       1 |

|  9 | 东方不败     |       1 | 葵花宝典        |        0 |       1 |

| 10 | 胡斐         |       0 | 胡家刀法        |        0 |       1 |

| 11 | 苗若兰       |       1 | 黄衣            |        0 |       1 |

| 12 | 程灵素       |       0 | 医术            |        0 |       1 |

| 13 | 袁紫衣       |       1 | 六合拳          |        0 |       1 |

---- -------------- --------- ----------------- ---------- ---------

13 rows in set (0.00 sec)

设计以5条数据为一页,根据上述查询结果有13条数据,应该出现分为3页,每页显示5条记录且最后一页仅有3条记录;]# cd py3/django-test1/test5

修改视图函数:]# vim bookshop/views.py

import os

from django.shortcuts import render

from django.http import HttpResponse

from django.conf import settings

from .models import *

from django.core.paginator import *

def herolist(request,pindex):

if pindex == '':

pindex = '1'

list1 = HeroInfo.objects.all()

paginator = Paginator(list1,5)

page = paginator.page(int(pindex))

context = {'page':page}

return render(request, 'bookshop/herolist.html',context)

def index(request):

return render(request,'bookshop/index.html')

def myExp(request):

a1 = int('abc')

return HttpResponse('hello_world')

def uploadPhoto(request):

return render(request,'bookshop/uploadphoto.html')

def uploadHandle(request):

pic1 = request.FILES['photo1']

picName = os.path.join(settings.MEDIA_ROOT,pic1.name)

with open(picName,'wb') as f:

for p in pic1.chunks():

f.write(p)

return HttpResponse('' % pic1.name)

添加html模板:]# vim templates/bookshop/herolist.html

html>

Title

{% for hero in page %}

{{ hero.hname }}

{% endfor %}


{% for index in page.paginator.page_range %}

{% if index == page.number %}

{{ index }}

{% else %}

{{ index }}

{% endif %}

{% endfor %}

修改url:]# vim bookshop/urls.py

from django.conf.urls import url

from .  import views

urlpatterns = [

url(r'^$',views.index),

url(r'^myexp$',views.myExp),

url(r'^uploadphoto$',views.uploadPhoto),

url(r'^uploadHandle$',views.uploadHandle),

url(r'^herolist/(\d )/$',views.herolist),

]

运行django服务器:]# python manage.py runserver 192.168.255.70:8000

浏览器访问:http://192.168.255.70:8000/herolist/1/

注意:此代码要求第一页时,访问必须输入页号1,才能显示,否则报错。

页面显示:

点击第2页,显示:

点击第3页,显示:

且显示的当前页没有链接的下划线。

Django mysql 分页显示_django之分页显示相关推荐

  1. python django mysql结果获取_Django中从mysql数据库中获取数据传到echarts方式

    尝试了几种方法,感觉过于复杂,于是自己写了一个方法. (1)首先在要绘图的页面传入从数据库中提取的参数,这一步通过views可以实现: (2)然后是页面加载完成时执行的函数ready,调用方法f; ( ...

  2. django mysql 修改密码_Django更改sqlite数据库使用mysql数据库 - 李金龙

    virtualenv,已经会用pip,已经装好了pycharm了. 替换sqlite代码 DATABASES = { 'default': { 'ENGINE': 'django.db.backend ...

  3. django mysql sql语句_Django中使用mysql数据库并使用原生sql语句操作

    Django自身默认使用sqlite3这个轻量级的数据库,但是当我们开发网站时,sqlite3就没有mysql好,sqlite3适合一些手机上开发使用的数据库. 准备的软件 mysql数据库,版本5. ...

  4. django mysql sql语句_Django笔记:连接数据库并执行SQL语句

    Django中安装好数据库和对应的数据库驱动之后,就可以直接执行SQL语句进行数据库和表的创建,以及数据的增删改查等操作,在Python3中,可以使用的数据库和驱动有多种,我这里使用的是MySQL数据 ...

  5. django mysql模糊查询_Django 模糊查询

    官方文档地址 https://docs.djangoproject.com/en/1.8/topics/db/queries/#complex-lookups-with-q-objects F查询 c ...

  6. django mysql内存泄漏_Django的:使内存的关系,而不保存到数据库

    回想起这里未来的读者着想: 我已经通过定义一个代表类中的关系,并检查羯羊对象的属性私有属性解决这个用例可以得到从检索DB或驻留在内存中. 下面是一个简单的例子: class Parent(models ...

  7. mysql 分页查询web_JavaWeb分页显示内容之分页查询的三种思路(数据库分页查询)...

    JavaWeb分页显示内容之分页查询的三种思路(数据库分页查询)-1.jpg (40.23 KB, 下载次数: 0) 2018-8-18 13:34 上传 在开发过程中,经常做的一件事,也是最基本的事 ...

  8. MVC分层+JDBC+数据库+Servlet实现JSP文件上传和显示+模糊查询+分页

    本文章主要介绍了一个简单的实例:用简单的MVC分层思想,使用数据库在web界面进行增删改查,以及上传,模糊查询+分页的实现. 1.util层(数据库连接管理) :连接数据库需要导包:mysql-con ...

  9. php显示固定页码,php显示页码分页类的封装

    搜索热词 本文实例为大家分享了PHP封装显示页码的分页类,供大家参考,具体内容如下 一.代码 conn.PHP PHP;"> connect(); } public function ...

最新文章

  1. 《Maven 实战》笔记之setting.xml介绍
  2. Spring-AOP @AspectJ进阶之绑定连接点方法入参
  3. 关于解决:ModuleNotFoundError: No module named ‘XXX‘的报错问题
  4. 微信小程序小模块界面,边框带阴影
  5. C# 网络编程之使用Socket类Send、Receive方法的同步通讯
  6. 【Linux】一步一步学Linux——yes命令(248)
  7. C#中的深度学习:使用OpenCV进行硬币检测
  8. 实时统计分析技术浅谈
  9. 数据中台公开课丨可以复用的中台架构建设经验与实践
  10. 支付宝 app,网站支付宝登录
  11. Carmack平方根函数经典案例
  12. js第六、七天 Array、string
  13. google广告分类
  14. Linux -- 代理服务器(Squid Server)的配置与应用2
  15. Maya制作卡通眨眼眼皮绑定技巧
  16. Scard API 智能卡操作
  17. 电话号码归属地批量查询方法的优缺点对比
  18. Nacos 2.0.0版本正式发布
  19. 终极方法--解决Tomcat启动闪退
  20. response响应,常用方法,分发器重定向,错误提示

热门文章

  1. python近日学习pyqt5相关知识
  2. 操作系统12————存储器管理之对换
  3. 波士顿动力机器人解锁跑酷新技能,凭借感知驱动技术适应技能
  4. 毕业设计-基于机器视觉的电线颜色识别系统软件- OpenCV
  5. WFP网络过滤驱动-限制网站访问
  6. 封装2个高德地图组件
  7. 6道常见Linux运维面试题讲解!
  8. 插画、插图网站,免费(商用)
  9. iOS 新浪微博分享授权失败的问题
  10. C#委托实现信用卡用户定时还款功能