python Django框架实现web端分页呈现数据


Posted in Python onOctober 31, 2019

这里介绍使用python-Django框架来实现web端分页呈现数据,主要说明对应的views,urls,templates三个文件的编程逻辑的实现。

首先介绍Django中的paginator类。paginator是Django中提供的可以实现管理数据分页的类。

from django.core import paginator

下面是本文用到的paginator中的属性和方法。

Paginator对象

1. 构造:Paginator(列表,int):返回分页的整体对象。
2. page_range:返回页码列表 [1,2,3,4…]
3. page(num):返回num页的数据内容

Page对象

1. 构造:Paginator对象的page()方法返回Page对象。
2. number:返回当前页的序号。
3. paginator:当前page对象相关的Paginator对象。page.paginator相当于Paginator对象。

A. 构造url。

#---urls.py------
from django.conf.urls import url
import views
urlpatterns = [
 # 这个url构造在根目录下
 # 定义为'info/数字'是为了传一个页面序号为参数给视图函数
 # 视图函数接收到这个数字为参数后,就可以调用对应页的数据呈现
 # 例如我们输入www.xxx.com/info/3,视图函数就会接收到(request,3)两个参数
 url(r'^info/(\d*)$',views.info),
]
#---------

B. 编写视图函数的逻辑。

#---views.py---
from django.shortcuts import render
# 这里的lcoation是定义的模型类,包含有若干条地名数据
from models import location
from django.core import paginator

# 视图函数
# 同样,index是url传进来的页面序号
def info(request,index):
 # 获取所有的的数据,list是一个列表,包含有所有数据对应的实例对象
 list = location.objects.all()
 # 使用Paginator方法返回一个分页的对象
 # 这个对象包括所有数据,分页的情况
 pag = paginator.Paginator(list,3)
 # 使用此判断语句是为了在用户跳转www.xxx.com/info/时也能访问第一页
 if index=='':
  index=1
 # 返回指定(index)页的数据,用于呈现在指定页上
 page = pag.page(index)
 # 构造上下文,以便html文件中能调用对应页的数据
 context = {
  'page':page,
 }
 return render(request,'booktest/info.html',context)
#---------

C. 模板文件。

#---info.html------
<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
</head>
<body>
<ul>
 # 视图函数传进来的上下文page是指定页的数据
 {% for each in page %}
 # 遍历显示每条数据
 <li>{{ each.location_name }}</li>
 {% endfor %}
</ul>
<hr>
 # 这里是重点
 # 同样还是需要调用视图函数传进来的page页的页码
 # page.paginator得到page的paginator对象
 # page.pageinator.page_range page_range可以返回页面列表[1,2,3,4...]
 # 遍历页面列表
 {% for index in page.paginator.page_range %}
  # page.number是视图函数现在呈现页的页码
  # 这个页码不需要做超链接
  {% if index == page.number %}
  <span>{{ index }}</span>
  {% else %}
  # 生成每页超链接
  # 点击每一个数字对应的链接就是'/info/点击的页数'
  # 这样在url解析的时候,又可以把这一页的编号传给视图函数
  # 视图函数根据这个页码呈现对应的内容
   <a href="/info/{{index}}" rel="external nofollow" >{{ index }}</a>
  {% endif %}
 {% endfor %}

</body>
</html>
#---------

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python如何在终端里面显示一张图片
Aug 17 Python
python 第三方库的安装及pip的使用详解
May 11 Python
python3 pillow生成简单验证码图片的示例
Sep 19 Python
Python操作MongoDB数据库的方法示例
Jan 04 Python
python时间日期函数与利用pandas进行时间序列处理详解
Mar 13 Python
python 在指定范围内随机生成不重复的n个数实例
Jan 28 Python
Django Docker容器化部署之Django-Docker本地部署
Oct 09 Python
jupyter notebook 重装教程
Apr 16 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
May 24 Python
keras 自定义loss model.add_loss的使用详解
Jun 22 Python
如何在windows下安装配置python工具Ulipad
Oct 27 Python
Python爬虫实战之爬取携程评论
Jun 02 Python
python3常用的数据清洗方法(小结)
Oct 31 #Python
Django实现网页分页功能
Oct 31 #Python
8段用于数据清洗Python代码(小结)
Oct 31 #Python
利用Python绘制有趣的万圣节南瓜怪效果
Oct 31 #Python
python实现大量图片重命名
Mar 23 #Python
python3图片文件批量重命名处理
Oct 31 #Python
Django1.11自带分页器paginator的使用方法
Oct 31 #Python
You might like
建立动态的WML站点(三)
2006/10/09 PHP
PHP 输出缓存详解
2009/06/20 PHP
Laravel使用原生sql语句并调用的方法
2019/10/09 PHP
JavaScript中的稀疏数组与密集数组[译]
2012/09/17 Javascript
Extjs grid添加一个图片状态或者按钮的方法
2014/04/03 Javascript
JavaScript 模块化编程(笔记)
2015/04/08 Javascript
JavaScript中ES6字符串扩展方法
2016/08/26 Javascript
Bootstrap CSS布局之按钮
2016/12/17 Javascript
浅析JS中的 map, filter, some, every, forEach, for in, for of 用法总结
2017/03/29 Javascript
基于vue实现分页效果
2017/11/06 Javascript
vue-router路由与页面间导航实例解析
2017/11/07 Javascript
JS实现的全选、全不选及反选功能【案例】
2019/02/19 Javascript
[02:28]DOTA2 2015国际邀请赛中国区预选赛首日现场百态
2015/05/26 DOTA
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
2016/07/11 Python
对python中类的继承与方法重写介绍
2019/01/20 Python
Python3.7 pyodbc完美配置访问access数据库
2019/10/03 Python
pytorch实现focal loss的两种方式小结
2020/01/02 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
2020/02/14 Python
python数据库编程 Mysql实现通讯录
2020/03/27 Python
加拿大购物频道:The Shopping Channel
2016/07/21 全球购物
STUBHUB日本:购买和出售全球活动门票
2018/07/01 全球购物
法国高保真音响和家庭影院商店:Son Video
2019/04/26 全球购物
易程科技软件测试笔试
2013/03/24 面试题
大学英语演讲稿(中英文对照)
2014/01/14 职场文书
趣味游戏活动方案
2014/02/07 职场文书
先进集体获奖感言
2014/02/13 职场文书
第一批党的群众路线教育实践活动总结报告
2014/07/03 职场文书
中秋节活动总结
2014/08/29 职场文书
2014幼儿园保育员工作总结
2014/11/10 职场文书
2015年勤工助学工作总结
2015/04/29 职场文书
2015年幼儿园卫生保健工作总结
2015/05/12 职场文书
毕业设计工作总结
2015/08/14 职场文书
Python中使用Lambda函数的5种用法
2021/04/01 Python
Vue如何实现组件间通信
2021/05/15 Vue.js
一篇文章带你学习Mybatis-Plus(新手入门)
2021/08/02 Java/Android
微信小程序中使用vant框架的具体步骤
2022/02/18 Javascript