Как я могу использовать flask_login с чертежом и фабрикой

Я пытаюсь заставить flask-login работать с чертежами и фабрикой, и у меня не получается (после долгих поисков и попыток).

Вот как я пытаюсь заставить это работать:

bp_home = Blueprint('bp_home', __name__)
bp_waterlevels = Blueprint('bp_waterlevels', __name__)


def create_app():
    app = Flask(__name__)
    app.register_blueprint(bp_home)
    app.register_blueprint(bp_waterlevels)
    # Include configuration file handling
    configure_app(app)

    return app

login_manager = LoginManager()
login_manager.init_app(create_app())
login_manager.login_view = 'login'

@login_manager.user_loader
def load_user(username):
    return User(username)


@bp_home.before_request
def before_request():
    g.user = current_user

У меня ошибка:

AttributeError: объект «Flask» не имеет атрибута «login_manager»

Я знаю, что это связано с порядком загрузки login_manager, но я не могу этого понять.

ПРИМЕЧАНИЕ: я видел это; Как мне обрабатывать вход в flask с несколькими чертежами вопрос, но он не работает для меня. Использование factory создает проблемы с выяснением того, как исправить порядок загрузки.

Может кто-нибудь указать мне правильное направление, я как бы застрял...


person Peter    schedule 11.04.2016    source источник
comment
Я подозреваю, что вы должны установить менеджер входа в систему внутри вашей фабрики. Я не очень люблю здесь заводскую выкройку. Я просто создаю свое приложение для фляги и настраиваю его в своем server.py, а затем загружаю оттуда свои чертежи.   -  person Wayne Werner    schedule 11.04.2016
comment
Я видел ответ, но он не использует заводской шаблон и у меня не работает. И Уэйн, я пробовал другие методы, но получил много других проблем с чертежами, flask_login и т. д. В любом случае спасибо, ура!   -  person Peter    schedule 11.04.2016
comment
Вы видели этот ответ? Есть ли какая-то конкретная причина, по которой вы считаете, что фабричный шаблон лучше, чем просто создание приложения?   -  person Wayne Werner    schedule 11.04.2016
comment
Одна из проблем заключается в том, что я хочу иметь файл представления для каждого чертежа, это доставило мне много головной боли с циркулярной загрузкой приложения. Я пробовал много вещей, но мог обойти это. Другая причина заключалась в том, что из-за циркулярной загрузки я не мог использовать app.config['some var'] например, в models.py. Когда у меня был один файл просмотра, все работало нормально, но я перешел к чему-то, что не могу понять, и не нашел достаточного ответа, несмотря на то, что много читал и пытался. Очень хотелось бы использовать Flask с blueprint, flask-login и flask-menu и т.д. и перейти к чему-то более продуктивному :)   -  person Peter    schedule 11.04.2016
comment
Вы должны использовать current_app в плане. Всегда.   -  person Wayne Werner    schedule 12.04.2016
comment
Я узнал об этом от Уэйна, я рефакторинг и попытаюсь понять это, но сначала мне нужно много прочитать по этому вопросу. Спасибо   -  person Peter    schedule 12.04.2016
comment
Я провел рефакторинг своего фляжного приложения и нашел решение без фабрики.   -  person Peter    schedule 19.04.2016