python-如何在Django中通过类似应用程序的配置注册Flask蓝图?
作者:互联网
如何像我在Django中的应用程序一样从配置中注册Flask蓝图?
我想在配置文件中定义蓝图,它将自动注册
#config.py
BLUEPRINTS = (
'news',
'files',
)
解决方法:
我实际上已经在一个临时命名为Hip Pocket的项目中草绘了类似的内容.它与@HighCat给出的答案基本相同,除了它使用Python的打包系统而不是config.py文件(尽管它可以扩展为从而是一个配置文件-最欢迎issues和pull requests.)
因此,在Hip Pocket中,您可以执行此操作(有关其工作方式,请参见hip_pocket.tasks
):
from flask import Flask
from hip_pocket.tasks import autoload
app = Flask(__name__)
autoload(app)
autoload会走一个包(默认情况下名为“ apps”,尽管您可以通过传递关键字arg apps_package来更改它)以查找flask.blueprint对象以在应用程序上注册(默认情况下,它将在名为的模块中查找名为route的符号在找到的每个子包中路由,但这些默认值也可以更改.)您的文件夹布局可能如下所示:
+ you_app
. . . . __init__.py
. . . . app.py
. . . . + apps
. . . . __init__.py
. . . . routes.py # contains the declaration `routes = Blueprint(...)`
. . . . + news
. . . . __init__.py
. . . . routes.py # Ditto
. . . . some_module.py
. . . . + files
. . . . __init__.py
. . . . routes.py # Ditto
. . . . # etc.
或者,如果您想使用基于配置的加载器,则可以执行以下操作:
from flask import Flask
from werkzeug.utils import import_string
app = Flask(__name__)
app.config.from_object("your_app.config")
for tool_path in app.config["BLUEPRINTS"]:
tool = import_string(tool_path)
app.register_blueprint(tool)
标签:django-apps,flask,python 来源: https://codeday.me/bug/20191201/2077589.html