Tornado框架-基于正则的动态路由映射分页数据获取计算

分页基本显示数据

第一步、设置正则路由映射配置,(r"/index/(?P<page>\d*)", index.indexHandler),正则匹配访问路径,访问录index/后面可以是可以是0个或多个数字
第二步、配置逻辑处理方法,get()方法里显示对应的页面,并传值一个SHUJU全局变量列表到html模板,这个全局变量列表里是字典显示的数据
第三步、在html模板里用模板语言,循环这个列表里的字典,显示到表格里
第四步、设置用户表单提交数据,表单以post方式提交,提交到/index/1,也就是第1也
第五步、逻辑处理post()方法接收用户提交的数据,组合成字典追加到SHUJU全局变量列表里,self.redirect("/index/1")跳转到第一页,显示出添加的数据

框架引擎

#!/usr/bin/env python
#coding:utf-8import tornado.ioloop
import tornado.web                              #导入tornado模块下的web文件
from controllers import indexsettings = {                                    #html文件归类配置,设置一个字典"template_path":"views",                    #键为template_path固定的,值为要存放HTML的文件夹名称"static_path":"statics",                    #键为static_path固定的,值为要存放js和css的文件夹名称
}#路由映射
application = tornado.web.Application([         #创建一个变量等于tornado.web下的Application方法(r"/index/(?P<page>\d*)", index.indexHandler),    #正则匹配访问路径,访问录index/后面可以是可以是0个或多个数字
],**settings)                                   #将html文件归类配置字典,写在路由映射的第二个参数里if __name__ == "__main__":#内部socket运行起来application.listen(8888)                    #设置端口tornado.ioloop.IOLoop.instance().start()

逻辑处理

#!/usr/bin/env python
#coding:utf-8import tornado.ioloop
import tornado.web                              #导入tornado模块下的web文件
SHUJU = [{"user":"lgx","emia":"729088188@qq.com"}
]#逻辑处理class indexHandler(tornado.web.RequestHandler):  #定义一个类,继承tornado.web下的RequestHandler类def get(self,page):                                              #get()方法,接收get方式请求
self.render("index.html",shuju = SHUJU)                               #显示index.html文件,并将全局变量SHUJU传到html模板def post(self, *args, **kwargs):user = self.get_argument("user")            #接收用户提交的用户名emia = self.get_argument("emia")            #接收用户提交的邮箱temp = {"user":user,"emia":emia}            #将邮箱和用户名组合成字典,SHUJU.append(temp)                          #将字典追加到SHUJU全局变量self.redirect("/index/1")                   #跳转到index/1,第一页

html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href='{{static_url("s1.css")}}'>
</head>
<body>
<h1>提交数据</h1>
<form method="post" action="/index/1">用户名:<input name="user" type="text"/>邮箱:<input name="emia" type="text"/><input type="submit" value="提交"/>
</form>
<h1>显示数据</h1>
<table border="1"><thead><tr><th>用户名</th><th>邮箱</th></tr></thead><tbody><!--循环接收到的shuju显示到表格-->{% for i in shuju %}<tr><td>{{i["user"]}}</td><td>{{i["emia"]}}</td></tr>{% end %}</tbody>
</table>
</body>
</html>

说明:get方式请求,post方法请求

分页根据页码获取相应范围的数据

第一步、在get方法里获取路由映射正则名称page,也就是访问后缀也是页码

第二步、根据页码获取相应范围的数据
  1、假如每页显示5条信息,page就是当前页
  2、第一页就应该获取SHUJU全局变量里的0-5条
  3、第二页就应该获取SHUJU全局变量里的5-10条
  4、换算页码获取数据范围的公式
  5、当前页码减去1乘以显示条数=当前页获取数据的起始条数,也就是从第几条开始获取
  6、当前页码乘以显示条数=当前页获取数据的结束条数,也就是从第几条结束获取
  7、通过起始和结束位置以下标方式获取指定范围的数据传入模板

第三步、对页码进行判断,保证页码是有效的
  1、接收到的页码是字符串,需要转换成数字
  2、如果转换出错,将页码设置成1
  3、如果页码小于1,将页面设置成1

  4、在逻辑处理的get方法里将接收的页码传到html模板,在post方法将接收到的页码写在跳转路由映射
  5、在表单发送链接里用模板语言接收页码

框架引擎

#!/usr/bin/env python
#coding:utf-8import tornado.ioloop
import tornado.web                              #导入tornado模块下的web文件
from controllers import indexsettings = {                                    #html文件归类配置,设置一个字典"template_path":"views",                    #键为template_path固定的,值为要存放HTML的文件夹名称"static_path":"statics",                    #键为static_path固定的,值为要存放js和css的文件夹名称
}#路由映射
application = tornado.web.Application([         #创建一个变量等于tornado.web下的Application方法(r"/index/(?P<page>\d*)", index.indexHandler),    #正则匹配访问路径,访问录index/后面可以是可以是0个或多个数字
],**settings)                                   #将html文件归类配置字典,写在路由映射的第二个参数里if __name__ == "__main__":#内部socket运行起来application.listen(8888)                    #设置端口tornado.ioloop.IOLoop.instance().start()

逻辑处理

#!/usr/bin/env python
#coding:utf-8import tornado.ioloop
import tornado.web                              #导入tornado模块下的web文件
SHUJU = [{"user":"lgx","emia":"729088188@qq.com"}
]#逻辑处理class indexHandler(tornado.web.RequestHandler):  #定义一个类,继承tornado.web下的RequestHandler类def get(self,page):                                              #get()方法,接收get方式请求#接收路由映射正则名称page,也就是用户访问的后缀,也就是访问的页码#假如每页显示5条信息,page就是当前页#第一页就应该获取SHUJU全局变量里的0-5条#第二页就应该获取SHUJU全局变量里的5-10条#换算页码获取数据范围的公式#当前页码减去1乘以显示条数=当前页获取数据的起始条数,也就是从第几条开始获取#当前页码乘以显示条数=当前页获取数据的结束条数,也就是从第几条结束获取try:                                        #尝试执行page = int(page)                        #将页码转换成数字类型except:                                     #如果出错page = 1                                #将页码等于1if page < 1:                                #判断页面如果小于1page = 1                                #页码等于1
kaishi = (page - 1) * 5                     #当前页码获取数据起始位置jieshu = page * 5                           #当前页码获取数据结束位置xianshi = SHUJU[kaishi:jieshu]              #通过起始和结束位置以下标方式获取指定范围的列表数据
self.render("index.html",shuju = xianshi,yema = page)   #显示index.html文件,通过起始和结束位置以下标方式获取指定范围的数据传入模板,传值页码def post(self,page):user = self.get_argument("user")            #接收用户提交的用户名emia = self.get_argument("emia")            #接收用户提交的邮箱temp = {"user":user,"emia":emia}            #将邮箱和用户名组合成字典,SHUJU.append(temp)                          #将字典追加到SHUJU全局变量self.redirect("/index/" + page)             #跳转到当前页面

html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href='{{static_url("s1.css")}}'>
</head>
<body>
<h1>提交数据</h1>
<form method="post" action="/index/{{yema}}">用户名:<input name="user" type="text"/>邮箱:<input name="emia" type="text"/><input type="submit" value="提交"/>
</form>
<h1>显示数据</h1>
<table border="1"><thead><tr><th>用户名</th><th>邮箱</th></tr></thead><tbody><!--循环接收到的shuju显示到表格-->{% for i in shuju %}<tr><td>{{i["user"]}}</td><td>{{i["emia"]}}</td></tr>{% end %}</tbody>
</table>
</body>
</html>

转载于:https://www.cnblogs.com/adc8868/p/6869371.html

第二百六十四节,Tornado框架-基于正则的动态路由映射分页数据获取计算相关推荐

  1. 美学心得(第二百二十四集)罗国正

    美学心得(第二百二十四集) 罗国正 (2021年7月) 2987.清朝画家方士庶认为:绘画是"于天地之外,别构一种灵奇"."因心造境,以手运心"."山 ...

  2. 第三百二十四节,web爬虫,scrapy模块介绍与使用

    第三百二十四节,web爬虫,scrapy模块介绍与使用 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中. 其最初是为 ...

  3. 美学心得(第二百三十四集) 罗国正

    美学心得(第二百三十四集) 罗国正 (2022年2月) 3009.能够将现实给的是一手烂牌,最终打出一手好牌的人,这样的人往往具有几个优秀的特质:第一,有远大的理想,有战略的眼光:第二,能忍常人不能忍 ...

  4. 第二百六十六节,Tornado框架-XSS处理,页码计算,页码显示

    Tornado框架-XSS处理,页码计算,页码显示 Tornado框架-XSS攻击过滤 注意:Tornado框架的模板语言,读取数据已经自动处理了XSS攻击,过滤转换了危险字符 如果要使危险字符可以远 ...

  5. 第二百七十五节,MySQL数据库安装和介绍

    MySQL数据库安装 一.概述 1.什么是数据库 ? 答:数据的仓库,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access.MS SQL Server等 ? 答:他们均是一种 ...

  6. 第一百七十四节,jQuery,Ajax进阶

    jQuery,Ajax进阶 学习要点: 1.加载请求 2.错误处理 3.请求全局事件 4.JSON 和 JSONP 5.jqXHR 对象 在 Ajax 课程中,我们了解了最基本的异步处理方式.本章,我 ...

  7. 第二百七十九节,MySQL数据库-pymysql模块操作数据库

    MySQL数据库-pymysql模块操作数据库 pymysql模块是python操作数据库的一个模块 connect()创建数据库链接,参数是连接数据库需要的连接参数 使用方式: 模块名称.conne ...

  8. 第五百六十四天 how can I 坚持

    变得越来越成熟了啊,放下的速度越来越快了. 我不会去羡慕那些亿万富翁,也不会去鄙视一个流浪汉,人人生而平等,just oncelife. 学会线代睡觉,晚上竟然又看起了不良人2.哎. 转载于:http ...

  9. 第一百八十四节,jQuery-UI,验证注册表单

    jQuery-UI,验证注册表单 html <form id="reg" action="123.html" title="会员注册" ...

最新文章

  1. jar包 和 war包?
  2. echarts tooltip的formatter回调参数设置,两组参数情况
  3. Angular Component的DOM级别的单元测试方法
  4. html5跨平台桌面打包,Html5到跨平台app应用
  5. 词云图 - WorldCloud - Python代码实现
  6. plt python 画直线_Matplotlib:先搞明白plt. /ax./ fig再画
  7. 如何只保留1000条数据mysql_php实现只保留mysql中最新1000条记录
  8. 电脑丢失dll文件能一键修复吗,哪种修复方法靠谱?
  9. java javac 以及 javaw
  10. 微信小程序开发(7)---协同工作篇
  11. 微信小游戏排行榜功能快速开发教程
  12. 阿里P6+Java研发工程师,到底牛在哪儿?真了
  13. pbe近似_量子化学中的主要近似.doc
  14. clang 中英文帮助手册
  15. LT7911D功能概述 LT7911D是Type-C/DP1.2转双路MIPI/Lvds的一款芯片
  16. 全球营商环境报告及数据(2004-2020年)
  17. 微信图片过期怎么办?如何查看微信过期图片?3步即可
  18. js原生常用知识点总结
  19. 小型网站组建(ENSP)
  20. Android4学习-高级编程读书笔记开始篇

热门文章

  1. NEL发布NEO Key-Value数据库LightDB
  2. 0.3 preface
  3. java基础第九天_多线程、自动拆装箱
  4. STL学习系列七:优先级队列priority_queue容器
  5. 四年前从这里开始,四年后从这里继续-回归博客园
  6. 一级域名301重定向到www二级域名
  7. 苹果电脑裸机和不裸机的区别_将Kubernetes带到裸机边缘
  8. android开源2016_开源多样性努力在2016年获得动力
  9. opensource项目_最佳Opensource.com:教程
  10. ubuntu 开源镜像_Ubuntu手机可能对开源意味着什么