《flask Web开发》第七章中,有config的代码:
创建一个文件Config.py保存配置:
...
class Config: SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string' SQLALCHEMY_COMMIT_ON_TEARDOWN = True #...各种其他配置变量在此省略 @staticmethod def init_app(app): pass class DevelopmentConfig(Config): #该环境下特有配置,省略 class TestingConfig(Config): #该环境下特有配置,省略 class ProductionConfig(Config): #该环境下特有配置,省略 config = { 'development': DevelopmentConfig, 'testing': TestingConfig, 'production': ProductionConfig, 'default': DevelopmentConfig }
创建基类Config来保存通用配置 其他的各环境使用不同的配置 再用一个字典提供选择
但是不懂静态方法init_app的具体作用是什么?一个空函数可以做什么?
@staticmethod def init_app(app): pass
在__init__.py中使用它:
...
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
求解答,谢谢....
config_name 应该是指config.py 的config字典中的4个键,但是怎么传过来的,谁告诉我啊?好纠结!!!
因为你的配置方法不止一种,但都是继承自基类Config,自然地,其他配置类也会继承这个init_app()作为一个接口,同时可以加上它们各自不同的实现。
这是一个类(静态)方法,与实例无关。
应该是用来对应用启动时初始化用的,只是现在没有去写里面的方法而已。