网站地图 联系我们

学习python首选-实战python学习班,专注于python高级工程师培养,python课程:包括Python核心编程技术、全栈开发、网络爬虫、人工智能等。python全栈工程师+提高工作经验,获取免费试听课程!
当前位置: python培训 > python学习 > 常见问题 > 正文

init_app静态方法是flask特有给config类的吗?

来源:肚皮舞 浏览量: 发布日期:20-06-16 09:15:33 调整字体大小【 【所属栏目:常见问题】

  init_app静态方法是flask特有给config类的吗?

  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):

  pass

  class DevelopmentConfig(Config):

  #该环境下特有配置,省略

  class TestingConfig(Config):

  #该环境下特有配置,省略

  class ProductionConfig(Config):

  #该环境下特有配置,省略

  config = {

  'development': DevelopmentConfig,

  'testing': TestingConfig,

  'production': ProductionConfig,

  'default': DevelopmentConfig

  }

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

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

  python@staticmethod

  def 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特有的用来初始化配置的方法?

标签:
肚皮舞新闻动态News Center

肚皮舞视频

肚皮舞培训课程

联系卡伊丝contact us
联系我们
python培训「零基础入门到精通」python人工智能编程培训班-0798wz.com

咨询热线:18301225663