Flask之工厂模式

Flask开发之–构建工厂模式(一)

提示:如果您学习了flask,想迫切开始自己的第一个项目,这里可以在一定程度上帮助你。



一、我为什么要说工厂模式?

Flask的工厂模式是为了开发较为大型的项目而构建的,但是对于初学者来说刚上来难以理解,甚至不知道如何去构建自己的工程函数,一头雾水,就像我当时学习Flask一样,由于是自学,所以一直是看书(推荐Grey Li的《Flask Web开发实战:入门、进阶于原理解析》)和听一些网课,我看到的网课上有讲,但是个人认为讲的太粗略,起码我在刚刚学完后,随即开发一个留言板之后,想上手相对大型的项目是卡住了,因为不了解工厂函数,面对程序,我都不会运行,更不要说去开发了,渐渐我陷入了一段短期的对工厂模式的恐惧,因为不会啊,理解不了,小的项目再重复开发学不到很多东西,大型项目想开发,但是连运行机制都不知道,垒代码简直就是在垒寂寞。知道我真想去做一个相对较大的项目,我下决心通过资料和一个大佬同学的帮助开始,这才走进带有工厂模式的项目。

二、使用步骤

1.项目文件构造

我就用最近做的一个案例举例子啦!在这里插入图片描述

从这张图中可以看到我框定了三个重要的文件,最上面的flask_env是你的主文件,但是这个主文件不要直接放项目代码!你的真正的项目代码要放在主文件下的一个子包下,这里对应的是gump文件夹,你所有的有关项目的代码都要放到这个文件夹下,最后要准备的就是.flaskenv(别忘记前面的一个“.”)脚本了,这里先记住这个文件,后面要用的,到这里,你的flask项目的运行任务完成第一步了。

2.项目文件的结构

在这里插入图片描述
项目文件的结构就相对比较好说,如果你直接创建的Flask项目,模版和静态文件夹会自动给你创建好的。其他文件你可以根据个人的习惯的去构造,这里就不过多去说了,这里前面有一个blueprint包,这是由一个模块升级成的包,由于项目需要的路由比较多,所以这里使用了蓝图,关于蓝图虽然也不好理解但是可以学到。

3.工厂函数

你的代码能不能跑起来全看工厂函数了

在这里插入图片描述
每次你创建一个python包的时候里面会自动生成__init__.py文件,它代表着你当前的项目文件。当你打开文件后就是工厂函数:
在这里插入图片描述
这里我们在提取一下重要信息:
gump/init.py:

from flask import *
def create_app():
	app = Flask('gump')
	#app.config.from_object()#引用配置文件
	return app#千万不要忘记返回值
	

这是最最基本的一个工厂函数,首先函数create_app是必须有的,并且其函数名不能更改,然后是Flask(‘gump’),这里为什么指明gump就可以能够使得程序找到这个文件夹,其实是前面提到的.flaskenv文件,.flaskenv文件:

在这里插入图片描述
这里的面有个FLASK_APP是给程序运行指明路径的,然程序知道去gunp下的__init__.py中去寻找工厂函数并运行(还需要提前安装python-dotenv包:pip install python-dotenv)。

4.蓝图

因为这里使用的工厂函数,所以就必须要用蓝图了,我们看到前面app的实例化在工厂函数里面,我们也不好去里面的注册路由,我们对代码拆分目的是为了好管理,而不是为了看起来高大上才写的,所以路由就要放到其他模块,比如gump下有一个auth.py模块,那么这里面就可以注册路由了:
gump/auth.py:

from flask import *
auth_bp = Blueprint('auth',__name__)


@auth_bp.route('/', methods=['GET', 'POST'])
def index():
	return '<h1>Hello Flask</h1>'

这个蓝本要跟工厂函数挂上勾才行:

from flask import *
def create_app():
	app = Flask('gump')
	#app.config.from_object()#引用配置文件
	app.register_blueprint(auth_bp, url_prefix='/auth')
	return app#千万不要忘记返回值
	

中间加一句表示路由已经可以在运行时候运行了,同时规定这个蓝图下的所有路由都在/auth路由之下。

之后你在终端上输入flask run命令之后程序就会运行了。用flask run命令的好处是当你修改代码之后程序会自动运行,免去手动运行的麻烦了。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值