Я хочу структурировать свое приложение Flask примерно так:
./site.py
./apps/members/__init__.py
./apps/members/models.py
apps.members
— это план Flask.
Теперь, чтобы создать классы моделей, мне нужно иметь доступ к приложению, что-то вроде:
# apps.members.models
from flask import current_app
from flaskext.sqlalchemy import SQLAlchemy
db = SQLAlchemy(current_app)
class Member(db.Model):
# fields here
pass
Но если я попытаюсь импортировать эту модель в свое приложение Blueprint, я получу ужасную RuntimeError: работа вне контекста запроса
. Как я могу правильно получить свое приложение здесь? Относительный импорт может работать, но он довольно уродлив и имеет свои проблемы с контекстом, например:
from ...site import app
# ValueError: Attempted relative import beyond toplevel package