【发布时间】:2020-05-20 10:48:54
【问题描述】:
我一直在尝试让我的 API 与 Flask 应用程序一起工作,但无论我如何更改,都会不断收到循环引用警告。
我可能有点傻。但我不明白模块是如何仅部分加载的。
我正在尝试实现factory pattern,但很难成功。
这是我的代码:
app/__init__.py:
from flask import Flask
from flask_login import LoginManager
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
login = LoginManager()
def create_app():
app = Flask(__name__)
from config import Config
app.config.from_object(Config)
db.init_app(app)
from app.api import apiv1
app.register_blueprint(apiv1)
login.init_app(app)
login.login_view = 'login'
return app
app/api/__init__.py:
from manage import app
from flask_restplus import Api
from flask import Blueprint
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address
limiter = Limiter(
app,
key_func=get_remote_address,
)
apiv1 = Blueprint('api', __name__, url_prefix='/api')
api = Api(apiv1, doc='/documentation', version='1.0', title='Docket API',
description='API for Docket. Create users and todo items through a REST API.\n'
'First of all, begin by registering a new user via the registration form in the web interface.\n'
'Or via a `POST` request to the `/Register/` end point', decorators=[limiter.limit("50/day", error_message="You have reached the API limit for today")])
manage.py:
from app import create_app, db
from flask_migrate import Migrate
from flask_script import Manager
app = create_app()
manager = Manager(app)
migrate = Migrate(app, db)
from app.routes import *
from app.models import *
if __name__ == '__main__':
app.run(debug=True)
显然我错过了一些东西。但我不确定是什么:/
【问题讨论】:
-
我相信
import *通常被认为是不好的做法,并且导入应该始终放在文件的顶部。 -
不用工厂模式也能搞定
-
就我而言,只是我在文件夹中有新的 .py 文件。一旦我将它正确放置到应用程序的根目录,它就可以正常工作了。