flask中BluePrint蓝图的使用

为什么要使用蓝图

    1. 使应用模块化。
    1. 提高代码的内聚性,降低代码的耦合性。

如何在flask中创建蓝图

    1. 在工作目录中右击创建Python packages包,创建出对应功能模块的包,其中会自动生成init模块,在init中创建BluePrint蓝图。
    1. init模块中导入对应的模块
    1. 创建蓝图对象
    1. 将路由注册到蓝图,建立蓝图和视图的联系
    1. 将蓝图注册到app

以创建用户信息users和订单orders为例

users/init.py模块中

# coding=utf-8
# 导入Blueprint模块
from flask import Blueprint
# 创建蓝图对象      参数 1.蓝图名称           2.访问路由前缀 
user_blue = Blueprint("users", __name__, url_prefix="/users")
# 导入视图函数
from . import view

orders/init.py模块中

# coding=utf-8
from flask import Blueprint

order_blue = Blueprint("order111", __name__, url_prefix="/orders")

from . import view

users/view.py模块中

# coding=utf-8
# 从users包中导入蓝图对象
from users import user_blue


# 将路由注册到蓝图,建立路由与视图函数的关系
@user_blue.route("/info")
def info():
    return "info page"

@user_blue.route("/login")
def login1():
    return "login page"

manage.py模块中

# coding=utf-8
from flask import Flask
# 导入蓝图对象
from users import user_blue
from orders import order_blue

app = Flask(__name__)

# 将蓝图注册到app
app.register_blueprint(user_blue)
app.register_blueprint(order_blue)


if __name__ == '__main__':
    print(app.url_map)
    app.run()

最终输出的url_map映射结果为:

Map([ order111.order1>,
  users.login1>,
  users.info>,
 ' (HEAD, OPTIONS, GET) -> static>])

由视图路由的映射关系可以看出,在创建蓝图对象时的参数url_prefix会加到访问路由url的前缀,而蓝图名会写在对应的视图函数名前,以唯一确定执行的视图函数。

你可能感兴趣的:(学习总结)