如何将装饰器应用于每个Flask视图

bea*_*rdc 5 python decorator flask python-decorators

我有一个装饰器(调用它deco),我想应用于我的Flask应用程序中的每个视图,以便修改响应头以避免IE的兼容模式(res.headers.add("X-UA-Compatible", "IE=Edge").我喜欢它

@app.route('/')
@deco
def index():
    return 'Hello world'
Run Code Online (Sandbox Code Playgroud)

我目前使用子类Flask来创建应用程序(以修改jinja行为)

class CustomFlask(Flask):
    jinja_options = ...

app = CustomFlask(__name__, ...)
Run Code Online (Sandbox Code Playgroud)

有没有办法可以修改CustomFlaskdeco装饰器应用到所有响应中?

Mar*_*ers 7

要为每个传出响应添加标头,请使用@Flask.after_request钩子:

@app.after_request
def add_ua_compat(response):
    response.headers['X-UA-Compatible'] = 'IE=Edge'
    return response
Run Code Online (Sandbox Code Playgroud)

有一个烧瓶延伸,做正是这一点; 注册钩子并添加标题.