V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
woz24416
V2EX  ›  Python

关于 Flask 扩展对象初始化的问题?

  •  1
     
  •   woz24416 · 2015-11-26 01:00:59 +08:00 · 2450 次点击
    这是一个创建于 3287 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在 Flasl Web 开发一书中,将程序结构化,将配置分层,并将程序实例放在工厂函数中,代码如下:

    class Config:
    @staticmethod
    def init_app(app):
    pass


    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)


    不明白的是: init_app 实在 config 类中定义的, config[config_name]调用 init_app(app)就可以理解,但扩展对象怎么能够调用呢?在 cofig 类(基类和子类)中没有看到和扩展对象有关的的定义啊? config[config_name]调用 init_app(app)就可以理解

    ps :上述代码忽略了一些导入代码和 boostrap = Bootstrap()一类的代码

    非常感谢哪位能够指导一下!!!
    2 条回复    2015-11-26 02:27:16 +08:00
    halfcrazy
        1
    halfcrazy  
       2015-11-26 01:32:25 +08:00
    init_app 是一般 extension 会实现的一个方法,用来加载拓展到 app 上
    woz24416
        2
    woz24416  
    OP
       2015-11-26 02:27:16 +08:00
    @halfcrazy 感谢,的确是每个扩展自己的一个方法
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4166 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:27 · PVG 13:27 · LAX 21:27 · JFK 00:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.