使用蓝本不仅仅是对视图函数分类,而是将程序某一部分的所有操作组织在一起。这个蓝本实例以及一系列注册在蓝本实例上的操作的集合被称为一个蓝本。你可以把蓝本想象成模子,它描述了程序某一部分的细节,定义了相应的路由、错误处理器、上下文处理器、请求处理器等一系列操作。但是它本身却不能发挥作用,因为它只是一个模子。只有当你把它注册到程序上时,它才会把物体相应的部分印刻出来——把蓝本中的操作附加到程序上。
/auth.py
from flask import Flask, Blueprint,jsonify
auth_bp = Blueprint("auth",__name__) # 创建蓝本
@auth_bp.route("/bp_login")
def bp_login():
return jsonify({"username":"wuhan","age":"18"})
/app.py
# 蓝本(蓝图)
**from auth import auth_bp
app.register_blueprint(auth_bp, url_prefix='/auth')**
为了区别蓝本, 可以用 后缀
_bp来区分,但是这不是必须的。
创建蓝本
author_bp = Blueprint("auth", __name__)
- auth : 蓝本的名称
- __name__ : 包或模块的名称
注册蓝本
from auth import auth_bp
app.register_blueprint(auth_bp, url_prefix='/auth')
auth_bp: 蓝本对象url_prefix:访问url前缀(给该蓝本下的url访问 全部加一个前缀)
# 所有视图都会匹配来自auth子域的请求
app.register_blueprint(auth_bp, subdomain="auth")
↑:为蓝本下的路由设置子域名
子域名:
-
为主域名分配不同的页面来完成任务
-
main.example.com/pay.example.com是example.com的子域名 -
配置静态文件
auth_bp=Blueprint('auth',__name__,static_folder='static',static_url_path='/auth/static')
- 配置模板
admin=Blueprint('admin',__name__,template_folder='templates')