zoukankan      html  css  js  c++  java
  • 第二百五十七节,Tornado框架-路由映射,逻辑处理,文件归类配置

    Tornado框架-路由映射,逻辑处理,文件归类配置

    Tornado框架

    Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本。这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过为了能有效利用非阻塞式服务器环境,这个 Web 框架还包含了一些相关的有用工具 和优化。

    Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其 非阻塞的方式和对 epoll 的运用,Tornado 每秒可以处理数以千计的连接,这意味着对于实时 Web 服务来说,Tornado 是一个理想的 Web 框架。我们开发这个 Web 服务器的主要目的就是为了处理 FriendFeed 的实时功能 ——在 FriendFeed 的应用里每一个活动用户都会保持着一个服务器连接。(关于如何扩容 服务器,以处理数以千计的客户端的连接的问题,

    源码安装
    https://pypi.python.org/packages/source/t/tornado/tornado-4.3.tar.gz

    快速上手

    Tornado框架路由映射和逻辑处理

    Tornado框架逻辑处理返回指定字符串

    RequestHandler方法,Tornado框架逻辑处理

    self.write()方法,参数字符串,返回字符串给浏览器

    self.redirect()方法,参数是路由映射里的配置路径后缀,跳转到对应的路由映射,也就是跳转页面,写在逻辑处理函数里与self.render()方法使用差不多
    Application方法,Tornado框架路由映射
    listen方法,Tornado框架设置路由端口

    #!/usr/bin/env python
    #coding:utf-8
    
    import tornado.ioloop
    import tornado.web                              #导入tornado模块下的web文件
    
    #逻辑处理
    class MainHandler(tornado.web.RequestHandler):  #定义一个类,继承tornado.web下的RequestHandler类
        def get(self):                              #执行get接收RequestHandler对象
            self.write("Hello, world")              #执行RequestHandler对象下的write方法向浏览器输出Hello, world
    
    
    #路由映射
    application = tornado.web.Application([         #创建一个变量等于tornado.web下的Application方法
        (r"/index", MainHandler),                   #判断用户请求路径后缀是否匹配字符串index,如果匹配执行MainHandler方法
    ])
    
    if __name__ == "__main__":
        #内部socket运行起来
        application.listen(8888)                    #设置端口
        tornado.ioloop.IOLoop.instance().start()

     

    原理图

    Tornado框架逻辑处理返回指定html文件

    self.render()方法,参数html路径,将html文件读取后返回给浏览器

    HTML文件

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <ul>
            <li>首页</li>
            <li>资讯</li>
            <li>关于</li>
        </ul>
    </body>
    </html>

    py文件

    #!/usr/bin/env python
    #coding:utf-8
    
    import tornado.ioloop
    import tornado.web                              #导入tornado模块下的web文件
    
    #逻辑处理
    class MainHandler(tornado.web.RequestHandler):  #定义一个类,继承tornado.web下的RequestHandler类
        def get(self):                              #执行get接收RequestHandler对象
            self.render("cshi.html")                #self.render()方法,参数html路径,将html文件读取后返回给浏览器
    
    
    #路由映射
    application = tornado.web.Application([         #创建一个变量等于tornado.web下的Application方法
        (r"/index", MainHandler),                   #判断用户请求路径后缀是否匹配字符串index,如果匹配执行MainHandler方法
    ])
    
    if __name__ == "__main__":
        #内部socket运行起来
        application.listen(8888)                    #设置端口
        tornado.ioloop.IOLoop.instance().start()

    html文件归类配置

    html文件归类配置后,render方法会自动到设置的文件夹找对应的html文件

    #!/usr/bin/env python
    #coding:utf-8
    
    import tornado.ioloop
    import tornado.web                              #导入tornado模块下的web文件
    
    #逻辑处理
    class MainHandler(tornado.web.RequestHandler):  #定义一个类,继承tornado.web下的RequestHandler类
        def get(self):                              #执行get接收RequestHandler对象
            self.render("cshi.html")                #html文件归类配置后,render方法会自动到设置的文件夹找对应的html文件
    
    settings = {                                    #html文件归类配置,设置一个字典
        "template_path":"template",                 #键为template_path固定的,值为要存放HTML的文件夹名称
    }
    
    
    #路由映射
    application = tornado.web.Application([         #创建一个变量等于tornado.web下的Application方法
        (r"/index", MainHandler),                   #判断用户请求路径后缀是否匹配字符串index,如果匹配执行MainHandler方法
    ],**settings)                                   #将html文件归类配置字典,写在路由映射的第二个参数里
    
    if __name__ == "__main__":
        #内部socket运行起来
        application.listen(8888)                    #设置端口
        tornado.ioloop.IOLoop.instance().start()

    js和css文件归类,静态文件配置

    注意js和css文件路径配置后必须在引入路径里加上配置文件夹名称

    静态文件配置后,html页面引入的css和js自动到配置的文件夹里找相应的js和css文件

    #!/usr/bin/env python
    #coding:utf-8
    
    import tornado.ioloop
    import tornado.web                              #导入tornado模块下的web文件
    
    #逻辑处理
    class MainHandler(tornado.web.RequestHandler):  #定义一个类,继承tornado.web下的RequestHandler类
        def get(self):                              #执行get接收RequestHandler对象
            self.render("cshi.html")                #html文件归类配置后,render方法会自动到设置的文件夹找对应的html文件
    
    settings = {                                    #html文件归类配置,设置一个字典
        "template_path":"template",                 #键为template_path固定的,值为要存放HTML的文件夹名称
        "static_path":"static",                     #键为static_path固定的,值为要存放js和css的文件夹名称
    }
    
    
    #路由映射
    application = tornado.web.Application([         #创建一个变量等于tornado.web下的Application方法
        (r"/index", MainHandler),                   #判断用户请求路径后缀是否匹配字符串index,如果匹配执行MainHandler方法
    ],**settings)                                   #将html文件归类配置字典,写在路由映射的第二个参数里
    
    if __name__ == "__main__":
        #内部socket运行起来
        application.listen(8888)                    #设置端口
        tornado.ioloop.IOLoop.instance().start()

    html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <!--注意js和css文件路径配置后必须在引入路径里加上配置文件夹名称-->
        <link rel="stylesheet" href="static/s1.css">
    </head>
    <body>
        <ul>
            <li>首页</li>
            <li>资讯</li>
            <li>关于</li>
        </ul>
    </body>
    </html>

    css文件

    body{
        color: #ee484e;
    }

     js和css文件归类,强制路径前缀【不推荐】

    #!/usr/bin/env python
    #coding:utf-8
    
    import tornado.ioloop
    import tornado.web                              #导入tornado模块下的web文件
    
    #逻辑处理
    class MainHandler(tornado.web.RequestHandler):  #定义一个类,继承tornado.web下的RequestHandler类
        def get(self):                              #执行get接收RequestHandler对象
            self.render("cshi.html")                #html文件归类配置后,render方法会自动到设置的文件夹找对应的html文件
    
    settings = {                                    #html文件归类配置,设置一个字典
        "template_path":"template",                 #键为template_path固定的,值为要存放HTML的文件夹名称
        "static_path":"static",                     #键为static_path固定的,值为要存放js和css的文件夹名称
        "static_url_prefix":"/qzhi/",               #键为static_url_prefix固定的,值为js和css的文件的强制前缀,必须在js和css的引入路径用强制前缀,替换配置文件夹
    }
    
    
    #路由映射
    application = tornado.web.Application([         #创建一个变量等于tornado.web下的Application方法
        (r"/index", MainHandler),                   #判断用户请求路径后缀是否匹配字符串index,如果匹配执行MainHandler方法
    ],**settings)                                   #将html文件归类配置字典,写在路由映射的第二个参数里
    
    if __name__ == "__main__":
        #内部socket运行起来
        application.listen(8888)                    #设置端口
        tornado.ioloop.IOLoop.instance().start()

    html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <!--必须在js和css的引入路径用强制前缀,替换配置文件夹-->
        <link rel="stylesheet" href="qzhi/s1.css">
    </head>
    <body>
        <ul>
            <li>首页</li>
            <li>资讯</li>
            <li>关于</li>
        </ul>
    </body>
    </html>
  • 相关阅读:
    C++指针(一)
    探讨mvc下linq多表查询使用viewModel的问题
    利用aspnetPager控件加存储过程实现对gridview的分页
    Javascript 笔记
    对于最近学习WCF的总结——唔聊的服务
    今天面试的一些知识性总结
    使用C#反序列化plist文件
    Running x86 apps on WinRT devices
    ItemsSource绑定中遇到的问题
    字节对齐 详解
  • 原文地址:https://www.cnblogs.com/adc8868/p/6850278.html
Copyright © 2011-2022 走看看