Это самый простой способ настроить приложение для фляги:
В app.py:
from flask import Flask
from app.settings import DevConfig
from app.extensions import api, mysqldb, marsh, mongodb
def create_app(config=DevConfig):
"""Application factory. This is used to run the app from the root.
:param config: Object to configure app stored in settings.py
"""
app = Flask(__name__.split('.')[0])
app.config.from_object(config)
register_endpoints()
register_extensions(app)
return app
def register_extensions(app):
"""Registration of flask components."""
mysqldb.init_app(app)
marsh.init_app(app)
mongodb.init_app(app)
api.init_app(app)
Тогда в extensions.py у меня будет что-то вроде этого:
from flask_restful import Api
from flask_httpauth import HTTPBasicAuth
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
from flask_pymongo import PyMongo
mysqldb = SQLAlchemy()
mongodb = PyMongo()
marsh = Marshmallow()
api = Api(prefix='/v1')
auth = HTTPBasicAuth()
Таким образом, у меня есть разные вещи.Возможно, есть способ зациклить init_app в расширениях, но тогда, на мой взгляд, он будет менее чистым.
Чтобы использовать I, я затем импортирую БД из файла расширений.