flask启动各种方式,
程序的工厂函数定义在app包的构造文件中,即__init__.py,这个配置文件导入了大部分正在使用的Flask扩展。但是,由于所需的程序实例尚未初始化,因此扩展尚未初始化,并且在创建扩展类时没有参数传递到构造函数中。函数是一个程序的工厂函数。它接受程序使用的配置名作为参数,配置名在config.py文件中定义。在创建和配置程序之后,可以初始化扩展。对之前创建的扩展对象调用init_app()来完成初始化过程。
刚开始学习FLask的时候,我们使用app=Flask(name)来创建应用实例,但是当我们想创建多个配置不同的实例时,该怎么办呢?每次都换很烦吗?然后为了减少麻烦,我们可以调用一个create_app函数返回应用实例,这就是工厂方法的一般含义!
无论你说多少话,都很难理解。请参见代码示例:
1.原始的写作方法
fromflaskimportFlask
frommyapp.adminimportadmin
导入配置
app=Flask(__name__)
app . config . from _ object(" config ")
app.register_blueprint(管理)
frommappimportviewsfrommaypimportapp
App.run(host=0.0.0.0)2。改进,使用工厂模式创建应用程序。
fromflaskimportFlask
fromflask.ext.mailimportMail
from flask . ext . sqlalchemyimportsqlalchemy
fromwerkzeug . utilsimportimport _ string
mail=Mail()
db=SQLAlchemy()
蓝图=[
myapp.main:main ,
myapp.admin:admin ,
]
defcreate_app(配置):
app=Flask(__name__)
app . config . from _对象(配置)
#加载扩展
mail.init_app(应用程序)
数据库初始化应用程序(应用程序)
#加载蓝图
forbp _ nameinblueprints:
bp=导入字符串(bp名称)
app.register _蓝图(bp)
returnappfromflaskimportblue print
main=Blueprint(main ,__name__)
from myapp . mainimportviewsfrommaypp . mainimportmain
@main.route(/)
definedex():
返回“h1HelloWorldfromappfactory!/h1run.py使用工厂函数后,启动前需要调用工厂函数创建应用实例。
frommyappimportcreate_app
导入配置
app=create_app(config )
app.run(host=0.0.0.0 ,debug=True)
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。