Flask扩展未注册应用程序扩展

2024-03-29 11:35:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我想访问一些在我的Flask应用程序上注册的扩展。我尝试使用app.extensions,但是我初始化的一些扩展不在dict中

from flask import current_app
current_app.extensions.get(plugin_name)

extensions.py

^{pr2}$

main.py

def configure_extensions(app):
    db.init_app(app)
    migrate.init_app(app, db)
    mail.init_app(app)
    toolbar.init_app(app)
    images.init_app(app)
    redis.init_app(app)
    plugin_manager.init_app(
        app,
        plugin_folder="app/plugins",
        plugin_import_path='app.plugins',
    )

当我看current_app.extensions时,我只看到一些扩展。plugin_manager和{}不在列表中。在

>>> for key in app.extensions: print(key)
migrate
mail
images
sqlalchemy
redis

为什么有些扩展没有在app.extensions中注册?我没有正确初始化它们吗?我怎样才能得到分机?在


Tags: keypyimportredisappdbinitmanager
1条回答
网友
1楼 · 发布于 2024-03-29 11:35:44

扩展不需要将它们自己添加到app.extensions,它是作为可选的便利而提供的。显然,这些扩展本身并没有添加。如果你想要的话,考虑向相关项目提交一个补丁。在

您不需要使用app.extensions来访问扩展实例。相反,导入您创建的实例,例如from myapp.extensions import db。这就是能够独立于初始化它们来创建它们的关键。当在应用程序上下文中使用时(例如在请求期间),对象将知道要使用哪个应用程序。在

相关问题 更多 >