我很难理解如何将一个 flask 应用程序拆分为多个文件。
我正在创建一个Web服务,我希望将API拆分为不同的文件(AccountAPI.py、UploadAPI.py ...),这样我就不会有一个巨大的python文件。
我读到过你可以用蓝图来做这件事,但我不完全确定那条路线是否适合我。
最后,我希望运行一个主python文件,并包含其他文件,以便在运行时,它们被视为一个大文件。
例如,如果我有Main.py和AccountAPI.py,我希望能够这样做:
Main.py:
from flask import Flask
import AccountAPI
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
AccountAPI.py:
@app.route("/account")
def accountList():
return "list of accounts"
我知道这个例子显然行不通,但有可能做到这一点吗?
谢谢
4条答案
按热度按时间8e2ybdfx1#
是的,蓝图是正确的方法。你要做的事情可以这样实现:
Main.py
AccountAPI.py
如果这是一个选项,您可以考虑为不同的API/蓝图使用不同的URL前缀,以便将它们清楚地分开。
有关更多文档,您还可以查看the official docs。
xiozqbni2#
使用
Blueprint
,您可以在routes
目录中添加路由。结构
初始化_.py
第1001章:我的index.py
第1001章:我的users.py
第1001章:我的app.py
如果要添加新的路由文件,例如
accounts.py
,只需在routes
目录中创建文件accounts.py
,就像index.py
和users.py
一样,然后将其导入到routes.__init__.py
文件中carvr3hs3#
如果您正在使用蓝图,并希望路由/重定向到您正在使用的模板中蓝图的url,则需要使用正确的url_for语句。
在您的情况下,如果您想打开蓝图的url帐户,您必须在您的模板中这样声明:
而对于主应用程序,它将如下所示:
否则werkzeug库将抛出错误。
pbgvytdp4#
另一种实现方法是使用lazy loading,其中您可以根据需要显式地附加视图函数。