什么是蓝图?
一个蓝图定义了可用于单个应用的视图、模版、静态文件等等的集合。可以把蓝图当作你的应用的管理面板。
目录结构:
├── app
│ ├── admin
│ │ ├── forms.py
│ │ ├── init.py
│ │ └── views.py
│ ├── home
│ │ ├── forms.py
│ │ ├── init.py
│ │ └── views.py
│ ├── init.py
│ ├── models.py
│ ├── static
│ └── templates
├── doc
├── manage.py
└── requirement.txt
为什么使用蓝图?
假如说我们要为某所学校的每个人建立一份档案,一个很自然的优化方式就是这些档案如果能分类管理,就是说假如分为老师、学生、后勤人员等类别,那么后续查找和管理这些档案就方便清晰许多。Flask的蓝图就提供了类似“分类”的功能。
如何使用蓝图?
蓝图的杀手锏是将你的应用组织成不同的组件。假如有一个微博客的项目,我们可能需要一个蓝图作用于此网站页面,然后还需要一个用于管理员面板中展示最新的蓝图消息,以及另一个用于管理员面板的蓝图,最终你将能够把你的应用依据许多能完成单一任务的小应用组织起来。
蓝图的优势?
Flask蓝图提供了模块化管理程序路由的功能,使程序结构清晰、简单易懂。
蓝图的创建及注册
定义蓝图(admin/init.py)
从Flask中导入Blueprint类,再创建一个实例即可。Blueprint接受两个参数实例化,分别为蓝本的名字和蓝本所在的包或模块,大多数情况下第二个参数使用Python __ name__ 变量即可。
from flask import Blueprint
# Blueprint接受两个参数实例化,分别为蓝本的名字和蓝本所在的包或模块,
# 大多数情况下第二个参数使用Python 的__name__ 变量即可。
admin = Blueprint("admin", __name__)
from app.admin.views import *
使用蓝图创建路由
from . import admin
@admin.route('/')
def index():
return "后台主页"
注册蓝图
创建app后,即可注册已创立的蓝图。
from flask import Flask
from app.admin import admin as admin_blueprint
from app.home import home as home_blueprint
from flask_script import Manager
app = Flask(__name__)
manager = Manager(app)
# 注册admin蓝图, url_prefix='/admin'添加前缀/admin
app.register_blueprint(admin_blueprint, url_prefix='/admin')
# 注册home蓝图, 不添加前缀
app.register_blueprint(home_blueprint)