如何像我在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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。