2

前言

前段时间写微服务用到了 Flask, 后来使用 SpringBoot 了,就没怎么用了,现在想边看官方文档边记笔记来复习和提高一哈。

Web 框架基本处理过程:

- 客户端发起 HTTP Request
- Web 应用根据 URL Route 找到对应的处理函数 
- 解析 Request 中传递的数据 & 进行相关处理操作
- 返回给客户端 Response

Flask 窥探

1. 创建 Flask Web 应用

from flask import Flask,
app = Flask(__name__)

2. Route 路由设置 & 请求方式

@app.route('/', method=['POST', 'GET'])
def handle():
    pass

3. HTTP Request 请求参数解析

@app.route('/', method=['POST', 'GET'])
def handler():
    args = request.args        # 跟在 url 后面的参数
    form = request.form        # form 表单参数
    data = request.get_json()  # request body 参数
    file = request.files       # 文件数据
    

4. HTTP Response 基本形态

可以以 (response, statue_code) 的形式返回

@app.route('/')
def handler():
    # 1. 返回渲染的模板
    response = render_template('index', name=name))
    # 2. 返回字符串
    response = 'hello...'
    # 3. 返回对象的 jsonify 
    response = jsonify([1, 2, 3])

5. HTTP Request 请求重定向

@app.route('/')
def handler():
    # url_for('A') 返回函数名为 A 的 route 路由地址
    return redirect(url_for('login'))
@app.route('/')
def handler():
    abort(404)

6. HTTP 状态异常处理

@app.errorhandler(404)
def page_not_found(error):
    return render_template('page_not_found.html'), 404

7. HTTP Cookies

@app.route('/')
def handler():
    # 获取 Cookies
    username = request.cookies.get('username')
    
    # 设置 Cookies
    resp = make_response(render_template(...))
    resp.set_cookie('username', 'the username')
    return resp
    

8. HTTP Session

@app.route('/')
def handler():
    session.get('username', None)
    session.pop('username', None)
    return redirect(url_for('index'))

9. Flask Flashed

@app.route('/login', methods=['GET', 'POST'])
def login():
    error = None
    if request.method == 'POST':
        if request.form['username'] != 'admin' or \
           request.form['password'] != 'secret':
            error = 'Invalid credentials'
        else:
            # 在页面跳转的"缓冲页面"
            flash('You were successfully logged in')
            return redirect(url_for('index'))
    return render_template('login.html', error=error)

10. Flask Log

app.logger.dubug()
app.logger.warning()
app.logger.error()

参考

https://dormousehole.readthed...


jiyang
12 声望8 粉丝

Everything will be happy endding : )