zoukankan      html  css  js  c++  java
  • Tornado入门2

    Tornado入门2

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
       
    import tornado.ioloop
    import tornado.web
       
    class MainHandler(tornado.web.RequestHandler):
        def get(self):
            self.write("Hello, world")  # 可以返回字符串
        # self.render("s1.html")  # 这个可以返回html
        # self.redircet("www.baidu.com")  # 跳转到某个url
       
    application = tornado.web.Application([
        (r"/index", MainHandler),
    ])
    
    if __name__ == "__main__":
        application.listen(8000)
        tornado.ioloop.IOLoop.instance().start()
    

    https://blog.csdn.net/belalds/article/details/80575755#

    上一节在tornado.web.Application.listen()(示例代码中的app.listen(8000))的方法中,创建了一个http服务器示例并绑定到给定端口,现在手动来实现这一部分功能。
    修改上一示例代码如下:

    # -*- coding:utf-8 -*-
     
    import tornado.web
    import tornado.ioloop
    import tornado.httpserver # 新引入httpserver模块
     
    class IndexHandler(tornado.web.RequestHandler):
        """主路由处理类"""
        def get(self):
            """对应http的get请求方式"""
            self.write("Hello World!")
     
    if __name__ == "__main__":
        app = tornado.web.Application([
            (r"/", IndexHandler),
        ])
        # ------------------------------
        # 修改这个部分
        # app.listen(8000)
        http_server = tornado.httpserver.HTTPServer(app) 
        http_server.listen(8000)
        # ------------------------------
        tornado.ioloop.IOLoop.current().start()
    

    在这一修改版本中,引入了tornado.httpserver模块,顾名思义,它就是tornado的HTTP服务器实现。
    这里创建了一个HTTP服务器实例http_server,因为服务器要服务于刚刚建立的web应用,将接收到的客户端请求通过web应用中的路由映射表引导到对应的 handler 中,所以在构建 http_server 对象的时候需要传出web应用对象app。http_server.listen(8000)将服务器绑定到8000端口。
    实际上一版代码中app.listen(8000)正是对这一过程的简写。

    使用命令行参数指定端口号

    #-*- coding:utf-8 -*-
    
    from tornado.web import RequestHandler,Application
    from tornado.ioloop import IOLoop
    from tornado.httpserver import HTTPServer
    import tornado.options
    
    """
    全局配置
    tornado.options.define(name, default, type, multiple, help)
    """
    #定义变量
    tornado.options.define('port',default=8000,type=int,help="this is the port >for application")
    
    class IndexHandler(RequestHandler):
       def get(self):
           self.write('Hello,world!')
    
    if __name__ == '__main__':
       app = Application([(r'/',IndexHandler)])
       tornado.options.parse_command_line()#命令行参数转换
    
       http_server = HTTPServer(app)
       http_server.bind(tornado.options.options.port)
       http_server.start(1)
       #启动IOLoop轮循监听
       IOLoop.current().start()
    

    将以上代码保存到为文件demo1.py然后是使用命令python demo1.py --port=8888指定运行端口为8888。

    路由

    # -*- coding:utf-8 -*-
    
    from tornado.web import Application, RequestHandler, url
    from tornado.ioloop import IOLoop
    from tornado.httpserver import HTTPServer
    
    class IndexHandler(RequestHandler):
        def get(self):
            self.write("<a href='"+self.reverse_url("login")+"'>用户登录</a>")
    
    class RegistHandler(RequestHandler):
        def initialize(self, title):
            self.title = title
    
        def get(self):
            self.write("注册业务处理:" + str(self.title))
    
    class LoginHandler(RequestHandler):
        def get(self):
            self.write("用户登录页面展示")
    
        def post(self):
            self.write("用户登录功能处理")
    
    if __name__ == "__main__":
        app = Application(
            [
                (r"/", IndexHandler),
                (r"/regist", RegistHandler, {"title": "会员注册"}),
                url(r"/login", LoginHandler, name="login"),
            ]
        )
    
        http_server = HTTPServer(app)
        http_server.listen(8000)
        IOLoop.current().start()
    
  • 相关阅读:
    [BZOJ]2589: Spoj 10707 Count on a tree II
    [BZOJ]2434: [Noi2011]阿狸的打字机
    Codeforces Round #408 (Div. 2)
    [BZOJ]2653: middle
    洛谷4月月赛R1
    2017省夏令营Day8
    2017省夏令营Day7
    2017省夏令营Day6
    【20170604校内模拟赛】香蕉
    【20170602模拟赛】秋之国的夏日祭
  • 原文地址:https://www.cnblogs.com/id88/p/14435393.html
Copyright © 2011-2022 走看看