Flask之工厂模式

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

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

文章目录

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

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

二、使用步骤

1.项目文件构造

Flask之工厂模式

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

2.项目文件的结构

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

; 3.工厂函数

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

Flask之工厂模式
每次你创建一个python包的时候里面会自动生成__init__.py文件,它代表着你当前的项目文件。当你打开文件后就是工厂函数:
Flask之工厂模式
这里我们在提取一下重要信息:
gump/ init.py:
from flask import *
def create_app():
    app = Flask('gump')

    return app

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

Flask之工厂模式
这里的面有个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 'Hello Flask'

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

from flask import *
def create_app():
    app = Flask('gump')

    app.register_blueprint(auth_bp, url_prefix='/auth')
    return app

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

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

Original: https://blog.csdn.net/qq_44810048/article/details/112548307
Author: Dom Wotingtun
Title: Flask之工厂模式

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/749293/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球