1.flash 的启动流程




2.中间件的介绍
- flask的中间件 和 Django的中间件 是有所不同的
- falsk 中间件是在 wsgi_api 方法前后执行操作(即: 在请求刚进来未进行视图函数匹配前执行操作(此时request和session对象还无法使用) 和 匹配到视图函数并且返回处理结果后执行操作)
- flask 中间件在 wsgi_api 方法前执行操作是无法使用 request 和 session 对象的,如果想获取请求中的数据就需要从 environ 参数中获取
- wsgi 方法的介绍: 根据不同的请求调用不同的视图函数,然后返回处理结果。即用户输入网址后,看到了网页响应
- flask 中间件比 before_request 先执行,比 after_request 后执行
- 在日常开发中很少使用,知道有这个东西就可以了
3.中间件的使用
- 注意: 需要在终端执行 app.py 才能看到效果,否则使用Pycharm是看不到效果的
# app.py
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/index')
def index():
return render_template('index.html')
class Middleware(object):
def __init__(self, old_wsgi_app):
self.old_wsgi_app = old_wsgi_app # 等同于 app.wsgi_app
def __call__(self, environ, start_response):
print('wsgi_app 执行前所要做的操作')
ret = self.old_wsgi_app(environ, start_response) # 等同于 app.wsgi_app(environ, start_response)
print('wsgi_app 执行完后所要做的操作')
return ret
if __name__ == '__main__':
"""
说明:
1. 在源码中 wsgi_app 是一个方法
2. Middleware 对象赋值给 wsgi_app
3. 此时 wsgi_app 是一个对象,当一个对象加括号(即: 对象())执行的时候就会调用该对象所在的类中的 __call__ 方法
4. 执行 __call__ 方法
"""
app.wsgi_app = Middleware(app.wsgi_app) # 相当于把 wsgi_app 给更新了
app.run()