"submodules" 的 Flask 应用
Flask app with "submodules"
我正在尝试开发具有不同 "submodules" 的 API。例如,有一个叫 todo,另一个叫 newsletter。
我想做的是,我希望能够在开发过程中 运行 模块本身,并且我希望能够 运行 整个 API 及其在服务器上的子模块。
我当前的文件夹结构是这样的
api
- api
- todo
- todo
- __init__.py
- routes.py
- utils.py
- ...
- README.md
- requirements.txt
- newsletter
- ...
- run.py
目标是能够在开发过程中运行:
cd api/todo/todo
python3 run.py
而这个在服务器上
python3 run.py
路由应该是相对的:
在生产过程中,一个子模块的路径应该是这样的
/add
但在服务器上,它们应该始终包含子模块的名称
/todo/add
此外,我希望能够将每个子模块的代码放在一个 GitHub 存储库中,以便其他人能够 运行 他们自己。
我目前无法导入模块。我可以使用 Flasks 蓝图修复路径 问题 吗?
非常感谢任何帮助!
您可以使用以下项目结构:
app
api
-todo
-__init__.py
-other_apis.py
-newsletter
-__init__.py
-other_apis.py
__init__.py
在app.api.todo.__init__.py
中:
from flask import Blueprint
todo = Blueprint("todo", __name__)
在app.api.newsletter.__init__.py
:
from flask import Blueprint
newsletter = Blueprint("newsletter", __name__)
在app.__init__.py
:
from flask import FLask
app = Flask(__name__)
from app.api.todo import todo
from app.api.newsletter import newsletter
app.register_blueprint(todo, url_prefix="/api/todo")
app.register_blueprint(newsletter, url_prefix="/api/newsletter")
if __name__ == "__main__":
app.run()
您可以更改注册哪个蓝图以及使用环境变量绑定到蓝图的 url 前缀。
我正在尝试开发具有不同 "submodules" 的 API。例如,有一个叫 todo,另一个叫 newsletter。
我想做的是,我希望能够在开发过程中 运行 模块本身,并且我希望能够 运行 整个 API 及其在服务器上的子模块。
我当前的文件夹结构是这样的
api
- api
- todo
- todo
- __init__.py
- routes.py
- utils.py
- ...
- README.md
- requirements.txt
- newsletter
- ...
- run.py
目标是能够在开发过程中运行:
cd api/todo/todo
python3 run.py
而这个在服务器上
python3 run.py
路由应该是相对的:
在生产过程中,一个子模块的路径应该是这样的
/add
但在服务器上,它们应该始终包含子模块的名称
/todo/add
此外,我希望能够将每个子模块的代码放在一个 GitHub 存储库中,以便其他人能够 运行 他们自己。
我目前无法导入模块。我可以使用 Flasks 蓝图修复路径 问题 吗?
非常感谢任何帮助!
您可以使用以下项目结构:
app
api
-todo
-__init__.py
-other_apis.py
-newsletter
-__init__.py
-other_apis.py
__init__.py
在app.api.todo.__init__.py
中:
from flask import Blueprint
todo = Blueprint("todo", __name__)
在app.api.newsletter.__init__.py
:
from flask import Blueprint
newsletter = Blueprint("newsletter", __name__)
在app.__init__.py
:
from flask import FLask
app = Flask(__name__)
from app.api.todo import todo
from app.api.newsletter import newsletter
app.register_blueprint(todo, url_prefix="/api/todo")
app.register_blueprint(newsletter, url_prefix="/api/newsletter")
if __name__ == "__main__":
app.run()
您可以更改注册哪个蓝图以及使用环境变量绑定到蓝图的 url 前缀。