Python 测开28期 - WL - 学习笔记 - 蓝图与视图

后端开发 - 蓝图与视图

蓝图 Blueprint

  • 优点:更好的对接口做管理
  • 定义:组织和管理应用程序的路由和视图的一种组织和机制
  • 缺点:要注销蓝图,必须销毁整个应用对象,

应用场景

  • 项目复杂度增加,路由和视图函数增多
  • 路由需要结构化,模块化进行管理

蓝图的作用

  • 蓝图是 Flask 提供的一个类

  • 具备 Flask 核心对象的很多功能,最重要的就算注册路由

  • 可以把整个项目分成不同的模块并在不同的模块中增加不同的功能

    1. 创建蓝图对象
    • 导入模块包,声明一个蓝图对象,2个必填参数
    • name:蓝图的名称,
    • import_name:蓝图所在的模块,一般定义为__name__
from flask import Blueprint
# 1. 蓝图的声明
goods_router = Blueprint(name="goods", import_name=__name__)
    1. 定义路由
    • 使用蓝图对象定义路由
    • 路由定义需要使用 / 开头,
    • 通过指定 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)
    1. 定义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)