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 25 Python
RC4文件加密的python实现方法
Jun 30 Python
Python守护进程和脚本单例运行详解
Jan 06 Python
Python使用OpenCV进行标定
May 08 Python
python/sympy求解矩阵方程的方法
Nov 08 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
Jun 14 Python
Django之模板层的实现代码
Sep 09 Python
python中的subprocess.Popen()使用详解
Dec 25 Python
Python读入mnist二进制图像文件并显示实例
Apr 24 Python
python删除指定列或多列单个或多个内容实例
Jun 28 Python
零基础学python应该从哪里入手
Aug 11 Python
python 获取字典特定值对应的键的实现
Sep 29 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
Windows IIS PHP 5.2 安装与配置方法
2009/06/08 PHP
wordpress自定义url参数实现路由功能的代码示例
2013/11/28 PHP
PHP预定义接口――Iterator用法示例
2020/06/05 PHP
JavaScrip单线程引擎工作原理分析
2010/09/04 Javascript
jquery中eq和get的区别与使用方法
2011/04/14 Javascript
关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器
2014/02/11 Javascript
教你如何在 Javascript 文件里使用 .Net MVC Razor 语法
2014/07/23 Javascript
jQuery Timelinr实现垂直水平时间轴插件(附源码下载)
2016/02/16 Javascript
jQuery查找节点并获取节点属性的方法
2016/09/09 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
2016/11/28 Javascript
jquery获取input type=text中的值的各种方式(总结)
2016/12/02 Javascript
JS日程管理插件FullCalendar简单实例
2017/02/07 Javascript
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
js求数组中全部数字可拼接出的最大整数示例代码
2017/08/25 Javascript
Vue使用zTree插件封装树组件操作示例
2019/04/25 Javascript
JavaScript面向对象编程小游戏---贪吃蛇代码实例
2019/05/15 Javascript
微信小程序调用wx.getImageInfo遇到的坑解决
2020/05/31 Javascript
antd中table展开行默认展示,且不需要前边的加号操作
2020/11/02 Javascript
[02:19]DOTA选手解说齐贺岁
2018/02/11 DOTA
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
Python文件监听工具pyinotify与watchdog实例
2018/10/15 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
Python 寻找局部最高点的实现
2019/12/05 Python
pytorch 彩色图像转灰度图像实例
2020/01/13 Python
Tensorflow轻松实现XOR运算的方式
2020/02/03 Python
Python使用OpenPyXL处理Excel表格
2020/07/02 Python
Python datetime 如何处理时区信息
2020/09/02 Python
CSS3实现大小不一的粒子旋转加载动画
2016/04/21 HTML / CSS
韩国三星集团旗下时尚品牌官网:SSF SHOP
2016/08/02 全球购物
事业单位辞职信范文
2014/01/19 职场文书
《小山羊和小灰兔》教学反思
2014/02/19 职场文书
英文请假条
2014/04/11 职场文书
2015年人事工作总结范文
2015/04/09 职场文书
父亲去世追悼词
2015/06/23 职场文书
2015年中学团委工作总结
2015/07/22 职场文书
描述鲁迅的名言整理,一生受用
2019/08/08 职场文书