python - Flask 应用程序带有 "submodules"

标签 python flask package

我正在尝试开发具有不同“子模块”的 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()

并且您可以使用环境变量更改注册哪个蓝图以及绑定(bind)到蓝图的 url 前缀。

关于python - Flask 应用程序带有 "submodules",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49569249/

相关文章:

python - 关于 Python 中 IDLE 调试器的问题

Javadoc 多包

python - 如何为 Flask 中的所有 HTTP 错误实现自定义错误处理程序?

python - 在 flask 请求中发送 flask 请求

python - 如果覆盖默认值,如何为 Flask 提供静态服务?

python - flask jsonify : key starting with digit

python - 将图表添加到 Flask Web 应用程序

node.js - 如何检查node_modules目录中是否有不必要的包?

swift - 如何将包集合添加到我的 Xcode 项目中?

python - 对 'edit' 进行反向操作,未找到参数 '(9,)' 和关键字参数 '{}'。尝试了 0 个模式 : []