from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_migrate import Migrate from flask_login import LoginManager from flask_session import Session from config import config from flask_bootstrap import Bootstrap # 初始化扩展,但此时不传入 app db = SQLAlchemy() migrate = Migrate() login_manager = LoginManager() sess = Session() bootstrap = Bootstrap() # login_manager 的基本配置 login_manager.login_view = 'auth.login' # 后面我们会创建一个叫 'auth' 的蓝图 def create_app(config_name='default'): """ 应用工厂函数 :param config_name: 配置名称 ('development', 'production') :return: Flask app instance """ app = Flask(__name__) # 1. 加载配置 app.config.from_object(config[config_name]) config[config_name].init_app(app) # 2. 初始化扩展 db.init_app(app) migrate.init_app(app, db) login_manager.init_app(app) sess.init_app(app) bootstrap.init_app(app) # 3. 注册蓝图 (Blueprint) # 后面我们会在这里添加蓝图 from .routes import main as main_blueprint app.register_blueprint(main_blueprint) from .auth import auth as auth_blueprint app.register_blueprint(auth_blueprint, url_prefix='/auth') return app