编程语言
首页 > 编程语言> > python-如何在Django中通过类似应用程序的配置注册Flask蓝图?

python-如何在Django中通过类似应用程序的配置注册Flask蓝图?

作者:互联网

如何像我在Django中的应用程序一样从配置中注册Flask蓝图?

我想在配置文件中定义蓝图,它将自动注册

#config.py
BLUEPRINTS = (
'news',
'files',
)

解决方法:

我实际上已经在一个临时命名为Hip Pocket的项目中草绘了类似的内容.它与@HighCat给出的答案基本相同,除了它使用Python的打包系统而不是config.py文件(尽管它可以扩展为从而是一个配置文件-最欢迎issuespull 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