Flask-Blueprint


Flask-Blueprint

demo01_blueprint.py

"""
蓝图的基本使用【掌握】

- 作用:为了进行模块化开发
- 特点:属于flask中自带的,不需要安装扩展就能使用
- 蓝图的使用流程:
    - 1. 创建蓝图对象
    - 2. 使用蓝图装饰视图函数
    - 3. 将蓝图注册到app中
"""
from flask import Blueprint, Flask
from demo02_product import bp
from dmeo03_user import user_bp

app = Flask(__name__)

# 将蓝图注册到app中
app.register_blueprint(bp)
app.register_blueprint(user_bp)

if __name__ == "__main__":
    app.run(debug=True)

demo02_product.py

from flask import Blueprint

# 创建蓝图对象
bp = Blueprint("myBp", __name__)


# 使用蓝图装饰视图函数
# 首页
@bp.route("/")
def index():
    return "index"


# 列表页
@bp.route("/list")
def list():
    return "list"


# 详情页
@bp.route("/detail")
def detail():
    return "detail"

dmeo03_user.py

from flask import Blueprint

# 创建蓝图对象
user_bp = Blueprint("user", __name__)


# 使用蓝图装饰视图函数
@user_bp.route("/user_info")
def user_info():
    return "user_info"

dmeo04_user_blue.py

from flask import Blueprint

# 1. 创建蓝图对象
# 参数1:user_blue,表示蓝图的名字,用来表示蓝图装饰的视图函数所属的蓝图
# 参数2:__name__,固定写法,表示的是蓝图所在的包的名字
# 参数3:static_folder,资源文件夹名字,
# 参数4:user_prefix,访问路径的前缀,为了防止资源混乱
# 参数5:template_folder,表示蓝图的模板文件。
#   如果app中也设置了自己的模板,且文件名相同,则优先访问app的
user_blue = Blueprint(
    "user_blue",
    __name__,
    static_folder="static",
    url_prefix="/user",
    template_folder="templates",
)

# 导入 view.py
from user import views
# view.py
from user import user_blue
from flask import render_template


# 2. 装饰视图函数
@user_blue.route("/user_login")
def user_login():
    return "user_login"


@user_blue.route("/register")
def register():
    return render_template("A01_blueprint.html")

A01_blueprint.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>用户注册</title>
</head>

<body>
    <h1>用户注册</h1>
    <h2>1、用户注册</h2>
    <div>哈哈哈哈哈哈哈哈哈哈哈哈</div>
</body>

</html>