@vithar1
Программист

Как правильно разделить приложение flask на модули?

Всем доброго времени суток!
При попытке сделать большое веб приложение на flask возникла некая проблема при делении приложения по разным файлам.
Есть файл app.py в котором хранится такое содержимое:
app = Flask(__name__)
engine = create_engine(config.SQLALCHEMY_DATABASE_URI)
Base = declarative_base()
Session = sessionmaker(bind=engine)
session = Session()
if __name__ == '__main__':
    app.run(debug=True

в файле сущности под названием user.py:
class User(Base):
    __tablename__ = 'payments'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    surname = Column(String)
    second_name = Column(String)

и наконец в файле с мапингами(MapTest.py) находится:
@map_test.route('/test')
def test():
    user = User()
    user.name = 'name'
    user.surname = 'sname'
    session.add(user)
    return Utils.getAnswer('ok')

Utils, если что формирует ответ.

При попытке импортировать в user.py
from app import Base
А потом в MapTest.py
from app import session
from entities.User import User

Возникает ошибка ImportError из-за того, что зависимости зацикливаются
Попытки использовать BluePrint не помогли в данной ситуации.

В общем, вопрос у меня даже более глобальный. Как организовать структуру flask приложения? Чтобы было прям как в spring, всё по директориям файлам и т.д. Поиски в интернете не дали положительного результата во всех мануалах по flask всё делается в одном файле.
  • Вопрос задан
  • 424 просмотра
Пригласить эксперта
Ответы на вопрос 1
ri_gilfanov
@ri_gilfanov
Web- and desktop-developer
Вынеси из app.py в отдельный файл (например, base/orm.py) следующее:
engine = create_engine(config.SQLALCHEMY_DATABASE_URI)
Base = declarative_base()
Session = sessionmaker(bind=engine)
session = Session()

А затем импортируй эти объекты там, где они используются.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы