第二百六十四节,Tornado框架-基于正则的动态路由映射分页数据获取计算
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框架-基于正则的动态路由映射分页数据获取计算的更多相关文章
- 第二百六十三节,Tornado框架-基于正则的动态路由映射
Tornado框架-基于正则的动态路由映射 1.在路由映射条件里用正则匹配访问路径后缀2.给每一个正则匹配规则(?P<设置名称>)设置一个名称,3.在逻辑处理的get()方法或post() ...
- 第二百六十八节,Tornado框架-路由映射之二级域名支持,html模板继承以及导入
Tornado框架-路由映射之二级域名支持,html模板继承以及导入 二级域名路由映射add_handlers()设置二级域名路由映射 注意:二级域名需要结合服务器ip绑定域名 框架引擎 #!/usr ...
- 第三百六十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mapping映射管理
第三百六十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mapping映射管理 1.映射(mapping)介绍 映射:创建索引的时候,可以预先定义字 ...
- 第二百六十九节,Tornado框架-Session登录判断
Tornado框架-Session登录判断 Session需要结合cookie来实现 Session的理解 1.用户登录系统时,服务器端获取系统当前时间,进行nd5加密,得到加密后的密串 2.将密串作 ...
- 第二百七十三节,Tornado框架-文件上传
Tornado框架-文件上传 第一.普通表单上传文件 self.request.files["fafafa"] 获取上传文件信息,参数["上传文件框的name名称&quo ...
- 第二百七十四节,同源策略和跨域Ajax
同源策略和跨域Ajax 什么是同源策略 尽管浏览器的安全措施多种多样,但是要想黑掉一个Web应用,只要在浏览器的多种安全措施中找到某种措施的一个漏洞或者绕过一种安全措施的方法即可.浏览器的各种保安措 ...
- 第二百六十五节,xss脚本攻击介绍
xss脚本攻击介绍 Cross-Site Scripting(XSS)是一类出现在 web 应用程序上的安全弱点,攻击者可以通过 XSS 插入一 些代码,使得访问页面的其他用户都可以看到,XSS 通常 ...
- 第二百二十四节,jQuery EasyUI,ComboGrid(数据表格下拉框)组件
jQuery EasyUI,ComboGrid(数据表格下拉框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解 EasyUI 中 ComboGrid(数据表格下拉框)组件的 ...
- 第二百三十四节,Bootstrap表单和图片
Bootstrap表单和图片 学习要点: 1.表单 2.图片 本节课我们主要学习一下 Bootstrap 表单和图片功能,通过内置的 CSS 定义,显示各 种丰富的效果. 一.表单 Bootstrap ...
随机推荐
- 微信/易信公共平台开发(四):公众号调试器 (仿真微信平台,提供PHP源码)
开发微信/易信公共平台时,调试往往很麻烦,一般只能在手机上边试边改, 或在服务器写日志.当你的服务器脚本有Bug时,手机上没有显示,追查是不容易的.我在开发过程中,编写了一个调试器, 能仿真微信/易信 ...
- 初次使用IntelliJ IDEA
一.认识IDEA IDEA 全称IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手.代码自动提示.重构.J2EE支持 ...
- 协议名称处理函数xxxprotoxxx()
为了方便操作,Linux提供了一组用于查询协议的值及名称的函数. xxxprotoxxx()函数: 上面的函数对文件/etc/protocols中的记录进行操作,文件中记录了协议的名称.值和别名等值, ...
- Jquery重新学习之七[Ajax运用总结A]
Jquery中Ajax的运用是另外一个重点,平时项目经常会用它进行一些异步操作:其核心是通过XMLHttpRequest对象以一种异步的方式,向服务器发送数据请求,并通过该对象接收请求返回的数据,从而 ...
- Python 遍历set
遍历set 由于 set 也是一个集合,所以,遍历 set 和遍历 list 类似,都可以通过 for 循环实现. 直接使用 for 循环可以遍历 set 的元素: weekdays = set([' ...
- Android研究之为基于 x86 的 Android* 游戏选择合适的引擎具体解释
摘要 游戏开发者知道 Android 中蕴藏着巨大的机遇. 在 Google Play 商店的前 100 款应用中,约一半是游戏应用(在利润最高的前 100 款应用中.它们所占的比例超过 90% ...
- 查看sqlserver 2008中性能低下的语句
经常使用这个语句来查看性能低下的sql语句: SELECT creation_time N'语句编译时间' ,last_execution_time N'上次执行时间' ,total_physical ...
- 使用spring AOP获得session的思路
由于Spring 的AOP面向切面编程,与Servlet容器没有任何关联,所以想要获得Session会话比较麻烦. 当然Struts2同样不依赖Servlet容器,可以在Spring AOP中可以使用 ...
- EMQ ---问题集
1)emqttd 使用 SSL遇到的问题:服务器直接布了一份emqttd ,然后什么都没管,端口默认的ws 8083,wss8084,mqtt 1883,mqtt(ssl) 8883. 结果跑起来之后 ...
- 摘:C#压缩文件
[[[[C#压缩文件]]]] 方法1: //[filepath想要压缩文件的地址] //[zippath输出压缩文件的地址] private void GetFileToZip(string file ...