带有多个模型文件的Flask循环导入

时间:2016-12-18 00:46:16

标签: python flask

假设我有一个烧瓶应用程序的以下结构:

├── 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中定义所有内容。

如何在两个不同应用程序中定义的模型之间存在相互依赖的情况下解决这种情况?

0 个答案:

没有答案