# Flask基础

参考资料:

# 入门

说起Python的web框架,首先想到的是:

  • Django:全能型框架,有很多模块,比较重。
  • Flask:轻量级框架。
  • Tornado:高性能框架,支持异步处理。

这里,我们以Flask入手。下面是一个简单的Flask应用:

from flask import Flask, request
app = Flask(__name__)

@app.route("/<name>")
def hello(name):
    return f"Hello, {escape(name)}!"
if __name__ == '__main__':
    app.run(host='0.0.0.0')
1
2
3
4
5
6
7
8

# 路由

# 获取参数

参考资料:

除了上面获取参数的方式外,还有如下:

@app.route("/test", methods=["GET", "POST"])
def process():
    targetVar="this is your world"
    if request.method == "GET":
        targetVar = request.args.get("content")
        # targetVar = request.values.get("content")
    if request.method == "POST":
        print("original data:%s" % request.get_data())
        if request.content_type.startswith('application/json'):
            # targetVar = request.get_json()["content"]
            print("deal in application/json")
            targetVar = request.json.get('content')
        elif request.content_type.startswith('multipart/form-data'):
            print("deal in multipart/form-data")
            targetVar = request.form.get('content')
        elif request.content_type.startswith('application/x-www-form-urlencoded'):
            print("deal in application/x-www-form-urlencoded")
            targetVar = request.form.get('content')
        else:
            print("deal in other")
            targetVar = request.values.get("content")
    print('print result %s' % targetVar)
    return targetVar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

注意:

  • 当用Postman发送multipart/form-data,以及application/x-www-form-urlencoded这两种类型时,不要自己定义Content-Type,使用它默认的值。

# 响应

参考资料:

@app.route('/')
def helloworld():
    return 'helloworld' #相当于 
    return 'helloworld',200
    return Response(response='hello world',status=200,mimetype='text/html')
    return make_response('page_four page', 200, {"name": "page four"})
1
2
3
4
5
6