一、蓝图说明:
什么是蓝图?
蓝图可以理解为,是一种对项目中的代码进行模块化管理的工具,相当于python中的包
为什么要使用蓝图?
如果我们将所有的Flask的请求方法都写在同一个文件下的话,非常的不便于我们的代码的管理和后期的功能代码的添加 (就是在一个py文件中具有多个功能代码,不利于维护和管理。)
如果在其他的模块中去调用视图函数,就会产生循环导入的问题。
蓝图的作用是什么?
1.对我们的flask应用程序进行模式化管理
2.提升开发效率,降低开发难度,协同开发
蓝图的运行机制是什么?
目的:修改app应用对象url_map路由表
蓝图可以在应用对象app上执行注册路由的操作,但是这个操作会修改应用对象app的url_map路由表。
过程:
因为蓝图对象没有路由表,当通过route装饰器去注册路由时,只是在它内部的延时列表中添加了一个项。我们可以通过将蓝图对象注册到应用对象app上的方法,从蓝图对象的延时列表中循环取出每一项,并调用应用对象app的add_url_rule的方法,修改应用对象app的路由表。
蓝图的基本操作流程是什么?
1.导入蓝图模块
from flask import Blueprint
2.初始化蓝图对象
user_bp = Blueprint('user', __name__)
3.使用蓝图对象去注册路由
@user_bp.route('/xx/xx')
4.把蓝图对象注册到app应用对象上
app.register_blueprint(user_bp)
二、代码示例:
文件目录结构:
|-- apps.py
|-user
|--view.py
|-- __init__.py
view.py
# 文件名称:view.py
# 步骤1.引入蓝图
from flask import Blueprint
# 步骤2.初始化蓝图对象
user_bp = Blueprint('user', __name__)
# 'user':蓝图名字,需要唯一,'__name__'蓝图所在的模块或者包
# 在url_for()使用解析时,需要先挂蓝图名.函数名(或者 endpoint的值),'user.xx'
# 步骤3.把视图函数注册到蓝图对象上
@user_bp.route('/xx/xx') # 在这个蓝图对象上进行操作,注册路由,指定静态文件夹,注册模板过滤器
def func():
pass
__init__.py
# 文件名称:__init__.py
from apps.user.view import user_bp
from flask import Flask
def create_app():
# template_folder、static_folder:引用的路径
app = Flask(__name__, template_folder='../templates',static_folder='../static')
# 步骤4. 将蓝图对象绑定在app上(也叫应用对象)
app.register_blueprint(user_bp) # 注册蓝图
app.config.from_object(配置文件)
return app