init_app静态方法是flask特有给config类的吗?,init_appflask,rt,今天看《flask


rt,今天看《flask Web开发》一书中,有示例代码:

创建一个文件Config.py保存配置:

python
...class Config: SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string' SQLALCHEMY_COMMIT_ON_TEARDOWN = True #...各种其他配置变量在此省略 @staticmethod def init_app(app): passclass DevelopmentConfig(Config): #该环境下特有配置,省略class TestingConfig(Config): #该环境下特有配置,省略class ProductionConfig(Config): #该环境下特有配置,省略config = { 'development': DevelopmentConfig, 'testing': TestingConfig, 'production': ProductionConfig, 'default': DevelopmentConfig}

总体意思是创建基类Config来保存通用配置 其他的各环境使用不同的配置 再用一个字典提供选择

但是Config类最后定义一个静态方法init_app,并且函数体为空:

python@staticmethoddef init_app(app):    pass

之后在另一个文件中的程序工厂函数:

python...bootstrap = Bootstrap()mail = Mail()moment = Moment()db = SQLAlchemy()def create_app(config_name):    app = Flask(__name__)    #将指定的配置通过from_object()方法导入app.config字典配置对象    app.config.from_object(config[config_name])    config[config_name].init_app(app)    bootstrap.init_app(app)    mail.init_app(app)    moment.init_app(app)    db.init_app(app)    return app

其中使用init_app的部分我就看不懂了,具体达到的效果是将之前在config.py中定义的配置给到这四个实例,但是init_app函数的函数体不是空的么?为什么可以达到效果?还是说init_app是flask特有的用来初始化配置的方法?

编橙之家文章,

评论关闭