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-8 import tornado.ioloop
import tornado.web #导入tornado模块下的web文件
from controllers import index settings = { #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-8 import 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-8 import tornado.ioloop
import tornado.web #导入tornado模块下的web文件
from controllers import index settings = { #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-8 import 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 #将页码等于1
if page < 1: #判断页面如果小于1
page = 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>

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

  1. 第二百六十三节,Tornado框架-基于正则的动态路由映射

    Tornado框架-基于正则的动态路由映射 1.在路由映射条件里用正则匹配访问路径后缀2.给每一个正则匹配规则(?P<设置名称>)设置一个名称,3.在逻辑处理的get()方法或post() ...

  2. 第二百六十八节,Tornado框架-路由映射之二级域名支持,html模板继承以及导入

    Tornado框架-路由映射之二级域名支持,html模板继承以及导入 二级域名路由映射add_handlers()设置二级域名路由映射 注意:二级域名需要结合服务器ip绑定域名 框架引擎 #!/usr ...

  3. 第三百六十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mapping映射管理

    第三百六十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mapping映射管理 1.映射(mapping)介绍 映射:创建索引的时候,可以预先定义字 ...

  4. 第二百六十九节,Tornado框架-Session登录判断

    Tornado框架-Session登录判断 Session需要结合cookie来实现 Session的理解 1.用户登录系统时,服务器端获取系统当前时间,进行nd5加密,得到加密后的密串 2.将密串作 ...

  5. 第二百七十三节,Tornado框架-文件上传

    Tornado框架-文件上传 第一.普通表单上传文件 self.request.files["fafafa"] 获取上传文件信息,参数["上传文件框的name名称&quo ...

  6. 第二百七十四节,同源策略和跨域Ajax

    同源策略和跨域Ajax 什么是同源策略  尽管浏览器的安全措施多种多样,但是要想黑掉一个Web应用,只要在浏览器的多种安全措施中找到某种措施的一个漏洞或者绕过一种安全措施的方法即可.浏览器的各种保安措 ...

  7. 第二百六十五节,xss脚本攻击介绍

    xss脚本攻击介绍 Cross-Site Scripting(XSS)是一类出现在 web 应用程序上的安全弱点,攻击者可以通过 XSS 插入一 些代码,使得访问页面的其他用户都可以看到,XSS 通常 ...

  8. 第二百二十四节,jQuery EasyUI,ComboGrid(数据表格下拉框)组件

    jQuery EasyUI,ComboGrid(数据表格下拉框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解 EasyUI 中 ComboGrid(数据表格下拉框)组件的 ...

  9. 第二百三十四节,Bootstrap表单和图片

    Bootstrap表单和图片 学习要点: 1.表单 2.图片 本节课我们主要学习一下 Bootstrap 表单和图片功能,通过内置的 CSS 定义,显示各 种丰富的效果. 一.表单 Bootstrap ...

随机推荐

  1. 关于android的设备管理器-DevicePolicyManager(二)

    上回分析到了/data/system/device_policies.xml这个文件是在package change事件发生的时候变化的.那么来看看它的内容. 依据以往的经验.在/data/syste ...

  2. excel 根据单元格内容自动调整列宽

      excel 根据单元格内容自动调整列宽 CreateTime--2018年5月28日08:49:40 Author:Marydon 1.情景展示 单元格宽度超过了列宽 2.解决方案 第一步:同时选 ...

  3. Android体系架构详解

    Andriod是什么? 首先,就像Android开源和兼容性技术负责人Dan Morrill在Android开发手册兼容性部分所解释的,“Android并不是传统的Linux风格的一个规范或分发版本, ...

  4. 查看tomcat启动文件都干点啥

    以下所写的都是基于Windows 操作系统,tomcat7.0版本.一直在使用tomcat但是老实说对于tomcat本身并没有一个系统的掌握,今天饶有兴致的随便看了看,做了一点笔记,写一点心得,我本人 ...

  5. udp套接字使用信号驱动式I/O

    信号驱动式I/O的本质就是:进程预先告知内核当某个描写叙述符发生事件时,内核会向该进程发送SIGIO信号通知进程,进程可在信号处理函数中进行处理 进程能够通过fcntl打开O_ASYNC标志或ioct ...

  6. (三)hibernate单表操作

    0. 贴上节hbm文件 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hib ...

  7. C#调用windows api控制打印机 状态获取 打印 自定义纸张 完整版

    using System; using System.Text; using System.Runtime.InteropServices; using System.Security; using ...

  8. 设置 TIM3_CH2 的 PWM 模式,使能 TIM3 的 CH2 输出

    /**   ******************************************************************************   * @file    st ...

  9. NAT Network Address Translation,网络地址转换

    Network Address Translation,网络地址转换

  10. php保存快捷方式到桌面

    /** * 保存首页到桌面 */ public function save_shortcut() { $shortcut = "[DEFAULT] BASEURL=http://www.19 ...