python 4 框架

python 4 框架

一 异步非阻塞IO的Tornado框架

下载 pip3 install tornado

第一个例子: 

import tornado.ioloop

import tornado.web

class MainHandler(tornado.web.RequestHandler):

    def get(self):

        self.write('Hello, world')

def make_app():

    return tornado.web.Application([

        (r"/", MainHandler)

    ])

if __name__ == '__main__':

    app = make_app()

    app.listen(8888)

    tornado.ioloop.IOLoop.current().start()

访问:localhost:8888

 

1 GET方式获取请求参数:

import tornado.ioloop

import tornado.web

class zi(tornado.web.RequestHandler):

    def get(self, uid):

        self.write('Hello, world%s'%uid)

app = tornado.web.Application([

    (r"/([0-9]+)", zi),

], debug=True)

if __name__ == '__main__':

    app.listen(8888)

    tornado.ioloop.IOLoop.instance().start()

 

2 POST请求

import tornado.ioloop

import tornado.web

html_txt = """

    <!DOCTYPE html>

    <html lang="en">

    <head>

        <meta charset="UTF-8">

        <meta name="viewport" content="width=device-width, initial-scale=1.0">

        <title>Document</title>

    </head>

    <body>

        <h2>收到GET请求</h2>

        <form method="post">

            <input type="text" name='name' placeholder="请输入你的名字">

            <input type="submit" value="发送post请求">

        </form>

    </body>

    </html>

"""

class zi(tornado.web.RequestHandler):

    def get(self):

        self.write(html_txt)

    def post(self):

        name = self.get_argument('name', default='匿名', strip=True)

        self.write(name)

app = tornado.web.Application([

    (r"/get", zi),

], debug=True)

if __name__ == '__main__':

    app.listen(8888)

    tornado.ioloop.IOLoop.instance().start()

3 使用cookie

import tornado.ioloop

import tornado.web

import tornado.escape

class aaaa(tornado.web.RequestHandler):

    def get(self):

        self.set_cookie('odn_cookie', tornado.escape.url_escape('未加密的COOKIE串'))

        self.set_secure_cookie('scr_cookie', '加密SCURE_COOKIE串')

        self.write('<a href="/shcook">查看设置的COOKIE</a>')

class shcookHdl(tornado.web.RequestHandler):

    def get(self):

        odn_cookie = tornado.escape.url_unescape(self.get_cookie('odn_cookie'))

        scr_cookie = self.get_secure_cookie('scr_cookie').decode('utf-8')

        self.write("不安全的%s 安全的%s"%(odn_cookie, scr_cookie))

app = tornado.web.Application([

    (r"/sscook", aaaa),

    (r"/shcook", shcookHdl),

], cookie_secret='abcdddd')

if __name__ == '__main__':

    app.listen(8888)

    tornado.ioloop.IOLoop.instance().start()

 

 

 

 

三 轻量级Web应用框架Flask

1 开始使用Flask框架

不同URL映射到同一函数

import flask

app = flask.Flask(__name__)

@app.route('/')

@app.route('/aaa')

def helo():

    return '你好,这是第一个Flask程序'

if __name__ == '__main__':

    app.run()

2 使用get请求获取URL参数

import flask

html_txt = '''

    <!DOCTYPE html>

    <html lang="en">

    <head>

        <meta charset="UTF-8">

        <meta name="viewport" content="width=device-width, initial-scale=1.0">

        <title>Document</title>

    </head>

    <body>

        <h2>如果收到了GET请求</h2>

        <form method="post">

            <input type="submit" value="提交">

        </form>

    </body>

    </html>

'''

app = flask.Flask(__name__)

@app.route('/aaa', methods=['GET', 'POST'])

def helo():

    if flask.request.method == 'GET':

        return html_txt

    else:

        return '我司收到POST请求'

if __name__ == '__main__':

    app.run()

 

3使用session和cookie

 

import flask

html_txt = '''

    <!DOCTYPE html>

    <html lang="en">

    <head>

        <meta charset="UTF-8">

        <meta name="viewport" content="width=device-width, initial-scale=1.0">

        <title>Document</title>

    </head>

    <body>

        <h2>如果收到了GET请求</h2>

        <a href="/get_xinxi">单击我获取cookie信息</a>

    </body>

    </html>

'''

app = flask.Flask(__name__)

@app.route('/set_xinxi/<name>')

def set_cks(name):

    name = name if name else 'anonymous'

    resp = flask.make_response(html_txt)

    resp.set_cookie('name', name)

    return resp

@app.route('/get_xinxi')

def get_cks():

    name = flask.request.cookies.get('name')

    return '获取的cookie信息:' + name

if __name__ == '__main__':

    app.run(debug=True)

 

 

文件上传

<h2>请选择一个文件上传</h2>

    <form method="post" enctype="multipart/form-data">

        <input type="file" name="file">

        <input type="submit" value="提交">

    </form>

 

import flask

app = flask.Flask(__name__)

@app.route('/upload', methods=['GET', 'POST'])

def upload():

    if flask.request.method == 'GET':

        return flask.render_template('upload.html')

    else:

        file = flask.request.files['file']

        if file:

            file.save(file.filename)

            return '上传成功'

        else:

            return '上传失败'

if __name__ == '__main__':

    app.run(debug=True)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2021-05-30 15:22  shuaibijian  阅读(103)  评论(0)    收藏  举报