앱 공장 패턴을 사용하여 Flask 애플리케이션을 설정하고 있습니다. 내 응용 프로그램은 Flask-Babel 확장을 사용하며 이는 공장에서도 설정됩니다. 그러나 그것을 사용하기 위해 청사진에서 확장 기능에 액세스하려고합니다.앱 공장에서 정의한 Flask 확장 기능에 액세스하십시오.
공장은 __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
가 나는 main.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
불행하게도, main.py
응용 프로그램 공장에서 babel
변수에 액세스 할 수 없습니다. 어떻게 해결해야합니까?
main.py에 set_locale을 남길 것을 권하겠습니까? – Sparrowcide
프로젝트를 구성하는 방법은 귀하와 귀하가 결정합니다. 작동 방식에 영향을주지 않아야합니다. 그것은 어쨌든 대답의 요점은 아니 었습니다. – davidism