1. 程式人生 > >flask 中xx.init_app(app)方法

flask 中xx.init_app(app)方法

oot lan line con 指定 ask ext 套路 name

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) 

http://flask.pocoo.org/docs/0.12/patterns/appfactories/
flask 文檔關於工廠模式裏面提到了上面的這種套路。

It ’ s preferable to create your extensions and app factories so that the extension object does not initially get bound to the application.

Using Flask-SQLAlchemy, as an example, you should not do something along those lines:

def create_app(config_filename):
app = Flask(__name__)
app.config.from_pyfile(config_filename)

db = SQLAlchemy(app)

But, rather, in model.py (or equivalent):

db = SQLAlchemy()

and in your application.py (or equivalent):

def create_app(config_filename):
app = Flask(__name__)
app.config.from_pyfile(config_filename)

from yourapplication.model import db
db.init_app(app)

flask 中xx.init_app(app)方法