【flask】工厂函数和蓝本的作用

Flask学习中的工厂函数和蓝本

程序的工厂函数在app包的构造文件中定义,即__init__.py。这个构造文件导入大多数正在使用的Flask扩展。不过由于尚未初始化所需的程序实例,所以没有初始化扩展,创建扩展类时也没有向构造函数传入参数。create_app()函数就是程序的工厂函数,他接受一个程序使用的配置名作为参数,该配置名在config.py文件中定义。程序创建,配置后,就能初始化扩展了。在之前创建的扩展对象上调用init_app()可以完成初始化过程。

转换成程序工厂函数的操作让定义路由变得复杂了。本来我们单脚本文件可以直接使用app.route修饰器的。现在由于程序是在运行时创建的,只有调用create_app()之后才能使用app.route修饰器,然而这时才定义路由就太晚了。为了解决使用工厂函数新带来的问题,Flask提供了蓝本的解决方案。蓝本和程序类似,也可以定义路由,不同的是,在蓝本中定义的路由处于休眠状态,直到蓝本注册到程序上,路由才会成为程序的一部分。这样一来,使用位于全局作用域的蓝本时,定义路由的方法几乎和单脚本程序一样。为了使蓝本有更大的灵活性,建议使用更结构化的方式在包中的多个模块中创建蓝本,为此,在程序包中创建一个子包,专门保存蓝本。蓝本的创建是通过实例化一个Buleprint类对象,创建时必须传入两个参数:蓝本的名字和蓝本所在的包或者模块,这样,模块就能和蓝本产生关联。另外蓝本在工厂函数中注册到程序上。

工厂函数

网上说了一大堆,我感觉就是重新封装了一个create_app函数,然后将一个配置文件传给创建的app实例。 这个配置文件决定了你是什么环境。就这些。

蓝本

作用:将一大推混杂在一起的视图函数分模块话,方便多人修改 ###1.创建蓝本:

第一参数是模块名字,第二个参数是模块所在的包 创建完成后,需要将原来的app.route(),中的app改为你创建蓝本的名字 ###2.注册蓝本 ![](https://img2018.cnblogs.com/blog/1532705/201910/1532705-20191025160608464-1207365511.png) 第一个参数是模块名,第二个参数是路由前缀。定义视图函数的时候就可以去掉这个前缀,也可以不写,如果你不嫌麻烦的话。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值