flask蓝图(这玩意就是django的子应用)

发布时间 2023-10-04 12:21:52作者: 蕝戀

蓝图的概念类似django的子应用,作用就是分模块开发,有关联的都放在一起。

蓝图的创建步骤:

  1. 新建一个包(一个包就是一个模块、等同于一个子应用)

  2. 在包的__init__.py中创建蓝图对象 。

    蓝图对象所有的参数和功能与Flask()对象类似。

    见:user下的__init__.py和views.py

  3. 在app中注册蓝图(子应用)(这玩意不就是和django的差不多嘛....)

PS.当然了,你完全可以将蓝图对象、视图函数都放在一个py文件中,只不过一般都是分开放的

实例:

  • 第一步:在项目目录下创建user包(等同于创建django的子应用)

  • 第二步:编辑user包的__init__.py文件,在里面创建蓝图对象

from flask import Blueprint

# 创建蓝图对象
# 第一个参数:蓝图的名称,类似django中的子应用名称
# 第二个参数:和Flask(__name__)的意义是一样的。
user_bp = Blueprint("user", __name__)

# 延迟导入视图函数的集合模块(不然会出现循环导入的BUG)
from . import views
  • 第三步:在user包下创建views.py,将视图函数单独放到一个模块中(方便管理)
# 导入第2步中创建的蓝图对象(实际上就是一个子应用app的引用)
from . import user_bp

# 剩余的使用方法和使用flask的app一样,比如指定路由:@app.route,这就是bp对象.route
@user_bp.route("/user/info", methods=["get", "post"])
def userinfo():
    return "userinfo page"

  • 最后:在app中注册蓝图(最重要的一步!必须注册!不然用个?)
from flask import Flask

app = Flask(__name__)

# 3、在项目总文件中注册蓝图(注册子应用)
from user import user_bp
# url_prefix参数用于:指定子应用的访问前缀url,这玩意就是和django的一样...
# url_prefix不写就是空,和django的是一样的。
app.register_blueprint(user_bp, url_prefix="/user")

# 此时访问userinfo视图函数的路径就会变成:/user/user/info,因为第三步中是使用了/user/info

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