flask十七: Flask四大内置对象


 

钩子函数:

  • 面向接口编程
  • 动态介入请求流程

 Django中间件

Django请求流程:
client ->urls -> views -->models -->views-->response
client -> process_request请求插件列表-->urls -> process_view插件列表
-> views -> models ->views->response->process_response插件列表
在django中,这些插件,就是钩子函数
 

Flask请求中间件

from flask import Flask
from application.views import init_view
from application.ext import init_ext
from application.settings import ENV
from application.middleware import load_middleware

def create_app(env):
    app = Flask(__name__)

    # 初始化项目配置
    config_object = ENV.get(env)
    app.config.from_object(config_object)

    # 初始化路由相关
    init_view(app)

    # 初始化扩展: models, migrate, Session持久化
    init_ext(app)

    # 中间件
    load_middleware(app)

    return app
from flask import request


def load_middleware(app):

    @app.before_request
    def before():
        """
        统计
        优先级
        反爬
            请求频率
        用户认证
        用户权限
        ......
        """
        print("app before_request中间件", request.url)

    @app.after_request
    def after(resp):
        """
        动态的数据返回
        数据过滤
        ......
        """
        print("app after_request中间件", resp)
        return resp

 

蓝图中间件

@root_blue.before_request
def before():
    print("blue before_request中间件", request.url)


@root_blue.after_request
def after(resp):
    print("blue after_request中间件", resp, type(resp))
    return resp

 

 

 

 

 

 

posted on 2020-06-22 15:18  myworldworld  阅读(253)  评论(0)    收藏  举报

导航