zoukankan      html  css  js  c++  java
  • tornado

    Tornado 简单示例


    案例1

    import tornado.web
    import tornado.ioloop
    
    
    class IndexHandler(tornado.web.RequestHandler):
        def get(self, *args, **kwargs):
            return self.write('hello world')
    
    
    
    app = tornado.web.Application([
        (r'/', IndexHandler),
    ])
    
    
    app.listen(8089)
    
    tornado.ioloop.IOLoop.instance().start()
    

    输入 网址 http://127.0.0.1:8089/


    案例2

    import tornado.web
    import tornado.ioloop
    
    class IndexHandler(tornado.web.RequestHandler):
        def get(self, *args, **kwargs):
            return self.render(template_name='templates/login.html')
    
        def post(self, *args, **kwargs):
            username = self.get_body_argument('username')
            return self.write(username)
    
    
    app = tornado.web.Application([
        (r'/', IndexHandler),
        (r'/login/', IndexHandler),
    ])
    
    app.listen(8888)
    
    tornado.ioloop.IOLoop.instance().start()
    

    templates/login.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form action="/login/", method="post">
        <p>
            用户名 <input type="text" name="username">
        </p>
    
        <p>
            密码 <input type="text" name="pwd">
        </p>
            <input type="submit" value="登录">
        </p>
    </form>
    </body>
    </html>
    

    访问http://127.0.0.1:8089/




    案例3 单文件上传

    import tornado.web
    import tornado.ioloop
    import os
    
    
    class UploadHandler(tornado.web.RequestHandler):
    
        @staticmethod
        def makeuploadfiles(fileinfo: list):
            filedict = fileinfo[0]
            filename, filedata = filedict.get('filename'), filedict.get('body')
            content_type = filedict.get('content_type')
    
            filepath = os.path.join(os.getcwd(), 'files', filename)
            filedirpath = os.path.dirname(filepath)
    
            return filepath, filedirpath, filedata, content_type
    
    
        def get(self, *args, **kwargs):
            return self.render('templates/upload.html')
    
        def post(self, *args, **kwargs):
            fileinfo = self.request.files['fileinfo']
            if len(fileinfo) == 1:
                filepath, filedirpath, filedata,content_type = self.makeuploadfiles(fileinfo)
    
                if not os.path.exists(filedirpath):
                    os.makedirs(filedirpath)
    
                with open(filepath, 'wb') as fw:
                    fw.write(filedata)
    
                self.set_header(name='Content-Type', value=content_type)
                self.write(filedata)
    
    
    
    
    app = tornado.web.Application([
        (r'/upload/',UploadHandler)
    ])
    
    
    app.listen(8888)
    tornado.ioloop.IOLoop().instance().start()
    

    templates/upload.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form action="/upload/", method="post", enctype="multipart/form-data">
        <input type="file" name="fileinfo">
        <input type="submit" value="上传">
    </form>
    </body>
    </html>
    
  • 相关阅读:
    51 Nod 1035 最长的循环节 (此题还不是很懂,日后再看)
    51 Nod 1101 换零钱(动态规划好题)
    51 Nod 1101 换零钱(动态规划好题)
    51 Nod 1163 最高的奖励
    51 Nod1042 数字0到9的数量
    51 Nod 1629 B君的圆锥
    iterrows(), iteritems(), itertuples()对dataframe进行遍历
    pandas计数 value_counts()
    scikit_learn逻辑回归类库
    Python中的深拷贝和浅拷贝
  • 原文地址:https://www.cnblogs.com/cjwnb/p/12608679.html
Copyright © 2011-2022 走看看