一、请求上下文和应用上下文
什么是请求上下文和应用上下文?,在这里,了解到了一个词叫上下文处理器
,通俗理解就是在一个请求中定义全局变量的。
每次启动Flask shell都需要导入数据库实例和模型,感觉繁琐又重复,那我们可以在程序中进行配置,让flask shell命令自动导入这些对象,这样在打开shell的时候就不用再导入这些对象,直接使用就可以了。这样就需要注册一个shell上下文处理器
二、shell上下文处理器(shell_context_processor)
@app.shell_context_processor 装饰器创建并注册一个shell上下文处理器,此函数必须返回数据,且只能是字典即使是空的字典。代码如下:
@app.shell_context_processordef shell():return dict(app=app, db=db)
其他相关上下文处理器
同样地,如果有一些在很多模板中都要用到的变量,那么为了避免重复动作,可以用context_processor
方法,来定义常用的变量。此函数必须返回数据,且只能是字典即使是空的字典。
代码示例如下:
@app.context_processordef inject_stage_and_region():light_theme = read_config().get('base', 'light_theme')dark_theme = read_config().get('base', 'dark_theme')return dict(light=light_theme + BOOTSTRAP_SUFFIX, dark=dark_theme + BOOTSTRAP_SUFFIX)