后端开发 - 蓝图与视图
蓝图 Blueprint
- 优点:更好的对接口做管理
- 定义:组织和管理应用程序的路由和视图的一种组织和机制
- 缺点:要注销蓝图,必须销毁整个应用对象,
应用场景
- 项目复杂度增加,路由和视图函数增多
- 路由需要结构化,模块化进行管理
蓝图的作用
-
蓝图是 Flask 提供的一个类
-
具备 Flask 核心对象的很多功能,最重要的就算注册路由
-
可以把整个项目分成不同的模块并在不同的模块中增加不同的功能
-
- 创建蓝图对象
- 导入模块包,声明一个蓝图对象,2个必填参数
- name:蓝图的名称,
- import_name:蓝图所在的模块,一般定义为__name__
from flask import Blueprint
# 1. 蓝图的声明
goods_router = Blueprint(name="goods", import_name=__name__)
-
- 定义路由
- 使用蓝图对象定义路由
- 路由定义需要使用 / 开头,
- 通过指定 methods 参数指定请求方法,methods的类型为列表list
# 2. 路由定义
@goods_router.route("/")
def index():
return {"code":0, "msg":"get success", "data":[]}
@goods_router.route("/add", methods=["POST"])
def add():
return {"code":0, "msg":"post success", "data":[]}
- 3.注册蓝图对象
- 完成 1 和 2 后,flask服务启动前,将蓝图注册到flask启动对象之中,另一个文件
- 启动应用后,通过 / 和 /add 就可以访问到蓝图中定义的视图函数
from flask import Flask
app = Flask(__name__)
if __name__ = '__main__':
# 注册蓝图
app.register_blueprint(goods_router)
app.run(host="127.0.0.1", port=5055, debug=True)
-
- 定义URL前缀
- 注册蓝图时,还可以指定一个 url_prefix 关键字参数,字符串类型,必须以 / 开头,默认是 /
- 作用是在蓝图上注册的路由URL会字段加上这个前缀,可以保证多个蓝图使用相同的URL规则而不会最终引起冲突
- 如果需要在 url_prefix 值的基础上再加下一级路由,则在 toute() 方法中传入对应路由即可,需要使用 / 开头
from flask import Blueprint
user_router = Blurprint("user", __name__. url_prefix="/user")
# 实际是访问 /user
@user_router.route("")
def user_list():
return {"code":0, "msg":"get success", "data":[]}
# 实际访问 /user/login
@user_router.route("/login", methods=["POST"])
def login():
return {"code":0, "msg":"post success", "data":[]}
if __name__ == '__main__':
# 注册蓝图
app.register_blueprint(user_router)
app.run(port=5055, debug=True)