flask学习笔记(工厂函数)

这篇博客记录了作者在学习Flask过程中对工厂函数的理解加深,特别提到了使用工厂函数初始化扩展的方法,并引用了知乎专栏的内容。文章指出,对于小型程序,可以直接在主脚本中实例化扩展并更新配置;而对于复杂应用,可以将初始化逻辑放入工厂函数中,通过create_app()创建程序实例。
摘要由CSDN通过智能技术生成

        最近flask理解又进了一步,记录一下。

关于工厂函数:

bootstrap = Bootstrap()
mail = Mail()
moment = Moment()
db = SQLAlchemy()
pagedown = PageDown()

login_manager = LoginManager()
login_manager.session_protection = 'strong'
login_manager.login_view = 'auth.login'


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)
    login_manager.init_app(app)
    pagedown.init_app(app)

app = create_app(os.getenv('FLASK_CONFIG') or 'default')

这里flask web 开发那本书没有说到的一点就是,flask的所有扩展都被设计成了可以先创建应用程序,然后再导入app 应用变量,因为如上面的 db=sqlalchemy() 都是全局的,而app 则可以有不止一个,所以设计成了先创建应用程序扩展,再绑定app,再通过form_object导入 实现好的config 配置 其中的一些配置在通过init_app传入相应程序中,最后通过 crate_app()来进行调用, os.getenv()来获取环境变量中的flask_config.然后执行。

最后我要说一句,google的oauth2认证,真的好坑啊...  我要哭了...

 ————————————————————————————————update(备忘)

 来自知乎专栏: https://zhuanlan.zhihu.com/flask

1、实例化扩展类

在一个小的程序里,可以直接导入扩展类,传入当前的程序实例(即“app”):

from flask import Flask
from flask_bootstrap import Bootstrap

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值