5

蓝图

之前我们已经通过代码了解了一些Flask基本的用法,现在出现一个问题,我们要做的功能越来越多,路由是不是都要放在run文件中呢?例如我们在不同的文件都定义了一些路由,如果想要访问他们,是不是要开启很多个不同的服务呢?

Flask中提供了蓝图,专门用作Flask的模块化。

Flask使用蓝图的概念来制作应用程序组件和支持应用程序内部或跨应用程序的通用模式。蓝图可以大大简化大型应用程序的工作方式,并为Flask扩展提供了在应用程序上注册操作的中心手段。Blueprint对象的工作方式与Flask应用程序对象类似,但实际上它不是一个应用程序。相反,它是如何构造或扩展应用程序的蓝图。

总之,蓝图可以使我们的程序更加模块化,不同功能的路由可以放在不同的模块下,最后集中到启动类中。

首先,新建一个flask项目文件,建立文件结构如下图所示:
图片描述

主运行文件

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.py

from flask import Blueprint


tag = Blueprint('tag',__name__)
@tag.route('/')
def index():
    return 'ok'

@tag.route('/add/')
def add():
    return 'tag add'

模块二:电影

所有的路由和视图函数依旧单独写在一个文件里面,这里起名view.py

from flask import Blueprint


movie = Blueprint('movie',__name__)
@movie.route('/')
def index():
    return 'ok'

@movie.route('/add/')
def add():
    return 'movie add'

运行结果
图片描述
图片描述


SheenStar
168 声望26 粉丝

祝你坚强