首先要了解蓝图的作用,模拟场景在团队开发过程中团队每个人都在写自己负责的功能模块,那多个py文件模板,我们如果完成后需要运行是不是要运行多个服务?但是我们的项目是一个整体,而不是零散的,所以我们怎么把很多py文件用一个run()启动呢,也就是怎么把他们构造在一起直接启动整体呢。其实并不难以前我们是不是也接触过类似的比如 Flask里的网页模板(render_template)中的继承(Block)和包含(include)机制,同理Blueprint 蓝图也是类似的功能。
首先是主框架:
#使用蓝图需要依赖Blueprint库from flask import Flask,Blueprint#导入自定义的蓝图文集,from py文件名 import创建好的蓝图名from day6_part import mypartapp = Flask(__name__)app.config.from_pyfile('config.ini')#注册定义好的蓝图文件,url_prefix给蓝图url加前缀,这里的前缀不是必须但是要和主框架的路由区分开不然会跟主框架路由冲突app.register_blueprint(mypart,url_prefix='/part')@app.route('/')def index():return "这是首页"if __name__ == "__main__":app.run()
需要植入到主框架的功能模块py文件
from flask import Flask,Blueprintapp = Flask(__name__)#注册蓝图,主框架调用的是这里赋值的变量名Blueprint内传入以后会用到的蓝图名和Flask对象的内置变量mypart = Blueprint('mypart',__name__)
#蓝图文件不需要导入配置文件只要主框架配置好即可# 这里我们就直接取装饰蓝图即可@mypart.route('/')def index():return "这里是蓝图的副功能"