zoukankan      html  css  js  c++  java
  • Tornado之输入与输出篇

    Tornado之输入与输出

    下面直接来看代码:

    import tornado.httpserver
    import tornado.ioloop
    import tornado.web
    import tornado.options
    from tornado.options import  define,options
    
    tornado.options.define("port",default=8080,help="run port", type=int)
    
    class MainHandler(tornado.web.RequestHandler):
        def get(self):
            self.write("hello  hh")
            self.write("<br>")
            self.write(b"hello  vv")
            self.write("<br>")
            self.flush()     #不flush的话会等到最后一起保存
            import time      #引入time模块
            time.sleep(2)
            di={
                "name":"xps",
                "age":18
            }
            self.write(di)           # write只能接受二进制 ,字典,字符串
            self.finish()           #    后面的也运行,只是不会再输出到页面上
            import json
            li=['xxx',18]
            li = json.dumps(li)            #列表转换json成字符串
            self.write(li)
    
    class TestIndexHandler(tornado.web.RequestHandler):
        def get(self):
            name = self.get_argument('name','no')
            self.write(name)
            print(name)
            name = self.get_arguments('name')
            print(name)
            # print(self.get_query_argument('name','no'))    #专门获取查询字符串url中参数
            # print(self.get_body_argument('name','no'))    #专门获取body内容
    
        def post(self, *args, **kwargs):     #post请求
            name = self.get_argument("name","no")
            psd = self.get_argument("pas","no")
            self.write(name)
            self.write(psd)
    
    class TemHandler(tornado.web.RequestHandler):
        def get(self):
            self.render("in_out.html")   #返回一个html文件
            """
            <form method="post" action="/tem">
            <!--action里面是路由 .将数据提交到"/tem"-->
            <p>用户名<br><input type="text" name="name"></p>
            <p>密码<br><input type="password" name="psd"></p>
            <input type="submit">
        </form>
    
            """
    
    class RecHandler(tornado.web.RequestHandler):
        def get(self):
            self.redirect("/index")   #跳转路由
    
    class ReqHandler(tornado.web.RequestHandler):
        def get(self):
            self.write(self.request.remote_ip)      #返回ip地址
            print(self.request)
            print(self.request.request_time)     #返回请求时间
    
    class SubHandler(tornado.web.RequestHandler):       ###按照位置传参
        def get(self,name,age):
            self.write("name: %s <br> age: %s"%(name,age))
    
    class UseSubHandler(tornado.web.RequestHandler):               ###按照名字传参
        def get(self,name,age):
            self.write("name: %s <br> age: %s"%(name,age))
    
    application = tornado.web.Application(
        handlers = [                          #handlers 固定的变量命名规则
            (r"/",MainHandler),
            (r"/index",TestIndexHandler),
            (r"/temp",TemHandler),
            (r"/rec",RecHandler),
            (r"/req",ReqHandler),
            (r"/sub/(.+)/([0-9]+)",SubHandler),      # URL传参,正则匹配      点号. -> 除自身之外
            (r"/use/(?P<name>.+)/(?P<age>[0-9]+)",UseSubHandler),          # 按照名字传入参数
        ],
        template_path = 'templates',     #模板路径(这里的路径根据自己的来)
        debug=True                 #代码保存上次之后,立即重启服务器,就不用手动重启了
    
    )
    
    
    if __name__ == "__main__":
        tornado.options.parse_command_line()
        http_server = tornado.httpserver.HTTPServer(application)
        http_server.listen(options.port)
        tornado.ioloop.IOLoop.instance().start()
        启动服务器之后,我们可以输入use路由来试试:`127.0.0.1:8080/use/lihua/18`,此时参数直接按照名字传入。
    
    **注:代码内容有来自潭州课堂**
    
    
    
    
  • 相关阅读:
    第一次站立会议
    电梯会议的相关视频
    软件需求分析--NABCD
    05需求工程软件建模与分析阅读笔记之五
    04需求工程软件建模与分析阅读笔记之四
    03需求工程软件建模与分析阅读笔记之三
    02需求工程软件建模与分析阅读笔记之二
    jsp+javabean+servlet实现简单的登录
    账户分析系统需求分析
    01需求工程软件建模与分析阅读笔记之一
  • 原文地址:https://www.cnblogs.com/shuai06/p/12397531.html
Copyright © 2011-2022 走看看