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>
    
  • 相关阅读:
    MiniUI破解方法
    mysql [索引优化] -- in or替换为union all
    MySQL匹配指定字符串的查询
    MySQL优化之like关键字
    Java身份证归属地目录树
    JS数字指定长度不足前补零的实现
    jQuery Distpicker插件 省市区三级联动 动态赋值修改地址
    JS 正则表达式从地址中提取省市县
    Eclipse/myEclipse 代码提示/自动提示/自动完成设置
    Spring Mvc配置多视图
  • 原文地址:https://www.cnblogs.com/cjwnb/p/12608679.html
Copyright © 2011-2022 走看看