37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
from flask import Flask, request, session
|
||
from flask_sqlalchemy import SQLAlchemy
|
||
from flask_migrate import Migrate
|
||
from flask_login import LoginManager
|
||
from flask_babel import Babel
|
||
from app.config import Config
|
||
import os
|
||
|
||
db = SQLAlchemy()
|
||
migrate = Migrate()
|
||
login_manager = LoginManager()
|
||
login_manager.login_view = 'auth.login'
|
||
babel = Babel()
|
||
|
||
|
||
def create_app(config_class=Config):
|
||
app = Flask(__name__, template_folder='../templates', static_folder='../static')
|
||
app.config.from_object(config_class)
|
||
|
||
db.init_app(app)
|
||
migrate.init_app(app, db)
|
||
login_manager.init_app(app)
|
||
babel.init_app(app)
|
||
|
||
from app.routes import main_bp, auth_bp
|
||
app.register_blueprint(main_bp)
|
||
app.register_blueprint(auth_bp, url_prefix='/auth')
|
||
|
||
@babel.localeselector
|
||
def get_locale():
|
||
# 如果用户已经选择了语言,从session中获取
|
||
if 'language' in session:
|
||
return session['language']
|
||
# 否则尝试匹配请求的语言
|
||
return request.accept_languages.best_match(app.config['LANGUAGES'])
|
||
|
||
return app |