假设我有一个烧瓶应用程序的以下结构:
├── app
│ ├── module1
│ │ ├── __init__.py
│ │ ├── models.py
│ ├── module2
│ │ ├── __init__.py
│ │ ├── __init__.py
└── __init__.py
app/__init__.py
文件定义以下应用程序的位置:
from flask import Flask
def create_app():
app = Flask(__name__)
from .module1 import module1 as module1_blueprint
app.register_blueprint(module1_blueprint)
from .module2 import module2 as module2_blueprint
app.register_blueprint(module2_blueprint)
return app
和模块级__init__
文件将其模块定义为Blueprints
:
# module1/__init__.py
# module2/__init__.py is similar; just replace 1 with 2
from flask import Blueprint
module1 = Blueprint('module1', __name__)
from . import models
我遇到的麻烦是两个模块中的类彼此依赖。例如,module2/models.py
看起来像这样:
from app.module1.models import Model1
class Model2:
pass
与module1
中的模型文件进行比较:
from app.module2.models import Model2
class Model1:
pass
我做出这个决定是因为我想更好地对我的模型进行组件化,将每个模型定义本地化为特定的应用程序,而不是像以前一样在一个models.py
中定义所有内容。
如何在两个不同应用程序中定义的模型之间存在相互依赖的情况下解决这种情况?