一、tornado基于正则路由
1.controllers文件夹下home.py文件代码如下:
View Code
2.controllers文件夹下account.py文件代码如下:
View Code
3.views文件夹下index.html文件代码如下:
index.html
4.views文件夹下fenYe.html文件代码如下:
View Code
5.views文件夹下zhengZe.html文件代码如下:
View Code
6.运行controllers文件夹下account.py文件,再浏览器中输入http://127.0.0.1:8090/zhengze/1/1即可路由访问index.html页面;输入http://127.0.0.1:8090/zhengze/1/2即可路由访问fenYe.html页面;输入http://127.0.0.1:8090/zhengze/2/1即可路由访问zhengZe.html页面
二、二级路由设置
在start.py文件下添加二级路由
import tornado.web import tornado.ioloop from controllers import home settings = { "template_path": "views", "static_path": "statics", } app = tornado.web.Application([ #基本路由 (r"/index/(?P<page>\d*)", home.IndexHandler), #基于正则路由 # (r"/zhengze/(?P<num>\d*)/(?P<id>\d*)", home.ZhengZeRouteHandler), ], **settings) #添加二级域名映射 app.add_handlers(("zongchen.com"),[ (r"/index/(?P<page>\d*)",home.ZhengZeRouteHandler), ]) if __name__ == "__main__": app.listen(8090) tornado.ioloop.IOLoop.instance().start()
运行start.py文件后在浏览器中输入zongchen.com:8090/index/1即可访问zhengZeRouteHandler所对应的页面
三.模板语言知识补充
我们一般把公共的html文件提取出来封装成模板,然后其他的html继承模板
extends:
页面整体布局进行继承
include:
常用组件进行导入
1.在views文件夹下的master文件夹下定义模板layout.html,文件代码如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .header{ height: 480px; background-color: blueviolet; } .footer{ height: 240px; background-color: olivedrab; } /*自定义css样式*/ {% block css %}{%end%} </style> </head> <body> <div class="header">fasfa</div> {% block body %}{%end%} <div class="footer">fsafas</div> <script src=""></script> <!-- 自定义js文件 --> {%block js%}{%end%} </body> </html>
2.views文件夹下的include文件夹下定义form.html,文件代码如下
<form action=""> <input type="text" name="formName"> <input type="text" value="提交"> </form> <ul> {% for li in listInfo%} <li>{{li}}</li> {%end%} </ul>
3.views文件夹下的extend文件夹下index.html文件继承模板layout.html文件,然后在自定义一些内容,文件代码如下:
{% extends '../master/layout.html'%} <!--继承master文件夹下的layout.html文件--> {% block body%} <h1>index页面继承了master文件夹下的layout.html模板</h1> {% include "../include/form.html" %} {% end %} {% block js %} <script> console.log("继承模板后的自定义的js放在这") </script> {% end %}
4.views文件夹下的extend文件夹下fuck.html文件继承模板layout.html文件,然后在自定义一些内容,文件代码如下:
{% extends '../master/layout.html'%} <!--继承master文件夹下的layout.html文件--> {% block body%} <h1>fuckoff页面继承了master文件夹下的layout.html模板</h1> <div style="background-color: blue">fsfs</div> {% include "../include/form.html" %} {% end %} {% block js %} <script> console.log("继承模板后的自定义的js放在这") </script> {% end %}
5.在controllers文件夹下的extend.py文件代码如下:
import tornado.web import tornado.ioloop class IndexHandler(tornado.web.RequestHandler): def get(self): print(456) self.render("extend/index.html",listInfo=[1,2,3]) def post(self): print(789) class FuckoffHandler(tornado.web.RequestHandler): def get(self): self.render("extend/fuck.html",listInfo=[4,5,6])
6.在start.py文件夹下添加对应路由,文件代码如下:
import tornado.web import tornado.ioloop from controllers import home from controllers import extend settings = { "template_path": "views", "static_path": "statics", } app = tornado.web.Application([ #基本路由 (r"/index/(?P<page>\d*)", home.IndexHandler), (r"/index", extend.IndexHandler), (r"/fuck", extend.FuckoffHandler), #基于正则路由 (r"/zhengze/(?P<num>\d*)/(?P<id>\d*)", home.ZhengZeRouteHandler), ], **settings) #添加二级域名映射 app.add_handlers(("zongchen.com"),[ (r"/index/(?P<page>\d*)",home.ZhengZeRouteHandler), ]) if __name__ == "__main__": app.listen(8090) tornado.ioloop.IOLoop.instance().start()
7.运行start.py文件后,在浏览器中输入127.0.0.1:8090/index和127.0.0.1:8090/fuck