以前咱们已经经过代码了解了一些Flask基本的用法,如今出现一个问题,咱们要作的功能愈来愈多,路由是否是都要放在run文件中呢?例如咱们在不一样的文件都定义了一些路由,若是想要访问他们,是否是要开启不少个不一样的服务呢?flask
Flask中提供了蓝图,专门用做Flask的模块化。app
Flask使用蓝图的概念来制做应用程序组件和支持应用程序内部或跨应用程序的通用模式。蓝图能够大大简化大型应用程序的工做方式,并为Flask扩展提供了在应用程序上注册操做的中心手段。Blueprint对象的工做方式与Flask应用程序对象相似,但实际上它不是一个应用程序。相反,它是如何构造或扩展应用程序的蓝图。模块化
总之,蓝图能够使咱们的程序更加模块化,不一样功能的路由能够放在不一样的模块下,最后集中到启动类中。函数
首先,新建一个flask项目文件,创建文件结构以下图所示:url
from app.movie.view import movie as movie_bp from app.tag.view import tag as tag_bp from flask import Flask if __name__ == '__main__': app = Flask(__name__) app.register_blueprint(tag_bp,url_prefix='/tag') app.register_blueprint(movie_bp,url_prefix='/movie') app.run(port=9099)
全部的路由和视图函数依旧单独写在一个文件里面,这里起名view.pyspa
from flask import Blueprint tag = Blueprint('tag',__name__) @tag.route('/') def index(): return 'ok' @tag.route('/add/') def add(): return 'tag add'
全部的路由和视图函数依旧单独写在一个文件里面,这里起名view.pycode
from flask import Blueprint movie = Blueprint('movie',__name__) @movie.route('/') def index(): return 'ok' @movie.route('/add/') def add(): return 'movie add'
运行结果对象