reifen Sie auf eine Flask-Erweiterung zu, die in der App-Factory definiert is

Ich verwende das App-Factory-Muster, um meine Flask-Anwendung einzurichten. Meine App verwendet die Flask-Babel-Erweiterung, die auch im Werk eingerichtet wurde. Ich möchte jedoch auf die Erweiterung in einer Blaupause zugreifen, um sie zu verwenden.

Die Fabrik ist in__init__.py.

def create_app(object_name):
    app = Flask(__name__)
    app.config.from_object(object_name)

    babel = Babel(app)

    app.register_blueprint(main_blueprint)
    app.register_blueprint(category_blueprint)
    app.register_blueprint(item_blueprint)

    db.init_app(app)
    return app

Ich möchte das Folgende zu @ hinzufügmain.py:

@babel.localeselector
def get_locale():
    if 'locale' in session:
        return session['locale']
    return request.accept_languages.best_match(LANGUAGES.keys())

@application.route('/locale/<locale>/', methods=['GET'])
def set_locale(locale):
    session['locale'] = locale
    redirect_to = request.args.get('redirect_to', '/')
    return redirect(redirect_to)     # Change this to previous url

Unglücklicherweise,main.py hat keinen Zugriff auf dasbabel -Variable aus der Anwendungsfactory. Wie soll ich das lösen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage