V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
linuxs
V2EX  ›  Flask

《flask web 开发》使用程序工厂函数没有看懂。

  •  
  •   linuxs · 2016-09-07 16:14:25 +08:00 · 4061 次点击
    这是一个创建于 2997 天前的主题,其中的信息可能已经有所发展或是发生改变。

    bootstrap = Bootstrap()

    mail = Mail()

    moment = Moment()

    db = SQLAlchemy()

    def create_app(config_name):

    app = Flask(__name__)
    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
    

    ~

    这段没看懂,希望大家帮忙解释一下。谢谢

    linuxs
        1
    linuxs  
    OP
       2016-09-07 16:34:18 +08:00
    这里 create_app 函数里的 config_name 这个参数是不是函数上 mail , db , moent 等这些实例呢?

    app.config.from_object(config[config_name]) 这段是将配置的程序导入到程序那么 config[config_name].init_app(app)这段是做什么的呢?
    liverpoolpjy
        2
    liverpoolpjy  
       2016-09-08 09:41:45 +08:00
    在你的 config.py 里有一个字典:
    config = {
    'development': DevelopmentConfig,
    'testing': TestingConfig,
    'production': ProductionConfig,

    'default': DevelopmentConfig
    }
    config_name 是选择用哪里个配置

    config[config_name].init_app(app) 也是在 config.py 里面定义的。
    @staticmethod
    def init_app(app):
    pass
    那个教程里好像是个空函数
    keelii
        3
    keelii  
       2016-09-08 10:05:03 +08:00
    其实就是做一些关联动作,使得 插件和主程序 之间共享一些数据
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3385 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 11:00 · PVG 19:00 · LAX 03:00 · JFK 06:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.