问题描述
我有以下 app.py:
def create_app(env_name) -> Flask:
app = Flask(__name__)
app.register_blueprint(foo1,url_prefix="/foo1")
app.register_blueprint(foo2,url_prefix="/foo2")
app.register_blueprint(foo3,url_prefix="/foo3")
return app
以及以下 main.py:
from .app import create_app
app = create_app(env_name)
app.run(HOST,PORT)
在各个蓝图/控制器/上下文中,我定义了一个应用程序模板所需的函数:
foo1app = Blueprint("foo1",__name__)
@foo1app.context_processor
def inject_Now():
return {'Now': datetime.utcNow()}
目前我将上面的代码片段复制粘贴到所有蓝图/控制器/上下文。有没有办法在没有此代码重复的情况下全局注入 Now
?谢谢。
解决方法
foo1app = Blueprint("foo1",__name__)
@foo1app.app_context_processor
def inject_now():
return {'now': datetime.utcnow()}
来自 Blueprint
类:
-
context_processor
:类似于Flask.context_processor
,但用于蓝图。此函数仅对蓝图处理的请求执行。 -
app_context_processor
:类似于Flask.context_processor
,但用于蓝图。每次请求都会执行这样的函数,即使在蓝图之外。