- 模块化程序
- 问题: 对于大型项目,需要将各个功能模块化,有利于组织和改进
- 思路: 通过蓝本来模块化程序实例,蓝本可以像程序实例一样,可以在蓝本上注册路由、注册错误函数、注册上下文处理函数等等
- 工具: Blueprint
- 代码:
# 创建蓝本
from flask import Blueprint
auth_bp = Blueprint('auth', __name__) # 第一个参数是蓝本名称,第二个参数是包或模块名称,可以使用name变量
# 装配蓝本(可装配视图函数、错误处理函数、请求处理函数、模板上下文处理函数等)
@auth_bp.route()
def login():
...
# 注册蓝本
from thirty_man.blueprints.auth import auth_bp
def create_app():
app = Flask(__name__)
app.register_blueprint(auth_bp, url_prefix='/auth') # 参数url_prefix可为蓝本下的视图添加URL前缀,subdomain参数可为蓝本下的子域名添加子路由
# 蓝本的路由端点:蓝本名.视图函数名,例如:
url_for('auth.login')
# 蓝本资源:可以把蓝本模块升级为包,在其中定义单独的static和template文件夹