当前位置 博文首页 > Python Tornado框架轻松写一个Web应用的全过程

    Python Tornado框架轻松写一个Web应用的全过程

    作者:雷学委 时间:2021-09-18 18:34

    目录
    • Tornado是什么
    • 安装
    • 试试看使用tornado框架来写一个web application
    • 总结

    Tornado是什么

    学委之前在看Jupyter组件的源码的时候,发现了tornado这个web框架。

    不仅仅做一个web框架, 通过使用非阻塞网络I/O,Tornado可以扩展到数万个开放连接。

    这样非常适合 long polling , WebSockets 以及其他需要与每个用户建立长期连接的应用程序。

    好,下面安装试用一下。

    安装

    pip install tornado
    

    pip 不会用的朋友可以看看 # 秒懂精通pip并快速体验深度学习应用吧!【多图建议收藏】

    试试看使用tornado框架来写一个web application

    来一个简单的,保存下面代码为app.py文件

    """
    雷学委#代码Demo
    """
    
    import tornado.ioloop
    import tornado.web
    
    “”“编写一个请求处理器”“”
    class MainHandler(tornado.web.RequestHandler):
        def get(self):
            self.write("Hello, Tornado Server");
    
    
    """创建一个web app"""
    def make_app():
        #绑定接口“/” 到MainHandler
        return tornado.web.Application([
    	    (r"/", MainHandler),	
        ])
    
    
    #程序入口
    if __name__ == '__main__':
        app = make_app()
        app.listen(8080)
        tornado.ioloop.IOLoop.current().start()
    

    运行如下:(python app.py)

    效果如下:

    这个示例很简单,先学会用起来。

    再试试做一个form

    """
    雷学委#代码Demo
    """
    
    import tornado.ioloop
    import tornado.web
    
    #一个处理form的请求处理器
    class MyFormHandler(tornado.web.RequestHandler):
        def get(self):
            #直接页面渲染一个form
            self.write('<html><body class="leiXueWei"><form action="/form" method="POST">'
                       '<input type="text" name="message">'
                       '<input class="leiXueWei" type="submit" value="Submit">'
                       '</form></body></html>')
    
        def post(self):
            self.set_header("Content-Type", "text/plain")
            self.write("You wrote " + self.get_body_argument("message"))
    
    
    class MainHandler(tornado.web.RequestHandler):
        def get(self):
            self.write("Hello, Tornado Server");
    
    def make_xue_wei_app():
        #使用application加载多个路由: “/” 接口路由 和 “/form” 接口路由
        return tornado.web.Application([
    	    (r"/", MainHandler),
            (r"/form", MyFormHandler)
        ])
    
    
    if __name__ == '__main__':
        app = make_xue_wei_app()
        app.listen(18081)
        tornado.ioloop.IOLoop.current().start()
    

    以上代码比前面第一个示例多了一个form的请求处理器和路由加载。

    看看页面渲染的效果,没有内嵌任何js,这个submit按钮就直接把发起了POST请求给“/form”接口。

    而且博主也没有编写任何JS处理页面,特别简化,这个”小魔法“是本文想要推荐tornado的一个原因!

    以上随笔,简单使用分享,后面再继续推这个框架的解读。

    总结

    jsjbwy