使用 Python 从 0 开发属于你的个人管理系统 05 篇 | 蓝图的构建使用
我们知道,项目代码的结构越清晰,模块化管理越好,对我们以后的扩展和优化起到很大的作用。所以项目一开始,项目的结构组织还是很关键的,比如不同的功能,如何拆分好它们,但又能使用到相同的资源?又可以做到相互独立,也就是我们常说的「低耦合,高内聚」。
今天还要给你介绍的是 Flask 的项目结构组织方式,那就是 Flask 的蓝图——Blueprints。
通往 Python 高手之路
什么是 Blueprints
Blueprints 是 Flask 提供的一个类,通过它可以创建蓝图,用于注册在 Flask 实例中,便于对自模块的管理,有效的提供了分离,共享应用程序的配置。
也就是说,你可以通过 Flask 创建实例 APP 来直接操作各种请求,但如果项目的功能比较多功能,我们需要归类好它们,比如你的项目有后台管理系统,也有前端使用的页面,那么就要我们可以分别为他们创建一个蓝图,前端有前端的操作方式和样式,后台管理有后台的统一操作,这样就可以做到具体每个蓝图得到统一管理操作,我们的程序就会很清晰。
蓝图的使用
蓝图的创建
我们可以在项目文件中,创建一个蓝图 package,用它来管理不同的模块,像这样这样:
blueprints
├── __init__.py
├── admin.py
├── auth.py
└── home.py
其中,admin 是后端的蓝图模块,auth 是用户认证的蓝图模块,home 是前端的蓝图模块。这样我们就可以分别在里面做相关的操作。
比如一个关于 admin 的蓝图你可以这样创建:
admin
├── __init__.py
├── views.py
├── templates
└── form.py
那这里面的操作也好,样式也好,都是可以统一到 admin 的,也可以和其他模块独立开来。
那么蓝图怎么写呢?我们以「前端蓝图」模块 home 为例,在 home.py 中定义模块:
from flask import Blueprint
home_bp = Blueprint('home', __name__)
@home_bp.route('/index')
def index():
return '这是首页'
@home_bp.route('/hi')
def hi():
return '你好啊啊!!'
在这里,我们首先导入了蓝图,通过它创建了 home_bp 实例,其中传入的第一个参数是蓝图的名称,第二个参数是
这样的目录:
blueprints
├── __init__.py
├── admin.py
├── auth.py
└── home.py
可以变成这样:
.
├── __init__.py
├── admin.py
├── auth.py
└── home
├── __init__.py
├── home.py
├── static
│ └── home.css
└── templates
└── home.html
那么这时候你想要引用这些资源,可以在创建蓝图的时候会默认定义:
home_dp = Blueprint('home', __name__, template_folder='tempaltes', static_folder='static')OK,以上就是 Flask 蓝图中的常用操作,接下来我们会使用到它,我们下一篇再见,peace!