Blueprint 其本质上来说就是让程序更加松耦合,更加灵活,增加复用性,提高查错效率,降低出错概率。在具体项目开发过程中,不同蓝本分别对应不同的功能模块。
假设有多个视图模块view.py,view2.py,view3.py,且只有view.py有主函数,就是像下面这种:
view2.py
# view2.py from flask import Blueprint view2 = Blueprint('view2',__name__) @view2.route("/") def index(): return "I am view2"view3.py
# view3.py from flask import Blueprint view3 = Blueprint('view3',__name__) @view3.route("/") def index(): return "I am view3"view.py
# view.py from flask import Flask from view2 import view2 from view3 import view3 app = Flask(__name__) def register_routes(app): app.register_blueprint(view2, url_prefix='/view2') app.register_blueprint(view3, url_prefix='/view3') register_routes(app) @app.route("/") def index(): return "I am main view" if __name__ == '__main__': app.run(debug=True)但是呢,又希望所有其他视图模块中的路由函数都可以通过统一的服务访问到,则可以通过上面蓝图注册方式,使用http://127.0.0.1:5000/view2和http://127.0.0.1:5000/view3来访问到各自文件中的index()方法。
简单来说,BluePrint 让多个不同模块的代码,通过注册的方式在逻辑上自成一体。