3.python web框架tornodo之二级路由设置、模板语言extends、include

发布时间 2023-04-06 06:46:43作者: 少壮不努力123

 一、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