backend
├── erp
│ ├── blueprint_create_order_and_add_products
│ │ ├── __init__.py
│ │ └── resources
│ │ ├── create_order.py
│ │ ├── __init__.py
│ ├── blueprint_general_query
│ │ ├── __init__.py
│ │ └── resources
│ │ ├── general_query.py
│ │ └── __init__.py
│ ├── common
│ │ ├── __init__.py
│ │ └── models
│ │ ├── brand.py
│ │ ├── productwithspecs.py
│ ├── database_collection
│ │ ├── finance.db
│ │ ├── orders.db
│ │ └── vendors.db
│ └── __init__.py
├── __init__.py
└── run.py
上面是我的应用程序结构--“模型”文件夹中有db类,问题是品牌模块中的类(通过关系)涉及并导入了产品规范模块中的类,并且有很多相关的db类。如何在没有循环导入的情况下将它们导入到烧瓶restful的CRUD资源中。
app.py的结构如下:
from erp import app
if __name__ == '__main__':
app.run(debug=True)
企业资源计划/ini.py的代码是:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:////tmp/test.db"
db = SQLAlchemy(app)
ma = Marshmallow(app)
from erp.blueprint_create_order_and_add_products import bp as bp1 # api_createorders_addproducts
# REGISTER blueprint apis to app
app.register_blueprint(bp1)
请告诉我如何避免循环导入,因为我需要将db类导入到蓝图中的资源文件夹中,例如create_order模块等。
发布于 2020-04-07 17:43:25
您应该使用应用程序工厂应用程序。您可以找到官方推荐的这里,这是一个好教程。
重构之后,您的erp/__init__.py应该类似于:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
app = Flask(__name__)
db = SQLAlchemy(app)
ma = Marshmallow(app)
def create_app():
db.init_app(app)
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:////tmp/test.db"
ma.init_app(app)
with app.app_context():
# Include your routes here
app.register_blueprint(erp.blueprint_create_order_and_add_products.bp)
return app
你的app.py
from erp import create_app
app = create_app()
if __name__ == '__main__':
app.run(debug=True)
从所有其他模块,您可以像这样导入:
from erp import app, db
https://stackoverflow.com/questions/61064752
复制相似问题