1. 定义
Flask
用蓝图的概念来在一个应用中或跨应用制作应用组件和支持通用的模式。蓝图很好地简化了大型应用工作的方式,并提供给 Flask
扩展在应用上注册操作的核心方法。一个 Blueprint
对象与 Flask
应用对象的工作方式很像,但它确实不是一个应用,而是一个描述如何构建或扩展应用的蓝图。
2. 为什么使用蓝图
- 把一个应用分解为一个蓝图的集合。这对大型应用是理想的。一个项目可以实例化一个应用对象,初始化几个扩展,并注册一集合的蓝图。
- 以
URL
前缀和/或子域名,在应用上注册一个蓝图。URL
前缀/子域名中的参数即成为这个蓝图下的所有视图函数的共同的视图参数(默认情况下)。 - 在一个应用中用不同的
URL
规则多次注册一个蓝图。 - 通过蓝图提供模板过滤器、静态文件、模板和其它功能。一个蓝图不一定要实现应用或者视图函数。
- 初始化一个
Flask
扩展时,在这些情况中注册一个蓝图
3. 实例
main.py
作为主程序,用来启动Flask
程序
user
文件夹作为一个蓝图
views.py
from flask import Blueprint
# 第一个参数为蓝图的名称,第二个参数为蓝图所在模块
# __name__是一个系统变量,如果当前模块是主模块,那么__name__的值就是__main__。
# 如果当前模块是被导入的,那么__name__的值就是模块名字
# 具体可参考网址https://www.jianshu.com/p/a6eed29c4204
user = Blueprint('user', __name__)
# 注册蓝图的路由
@user.route('/index')
def hello():
return 'this is blueprint'
main.py
from flask import Flask
# 导入蓝图
from user.views import user
# 注册Flask
app = Flask(__name__)
# 注册蓝图,使用url_prefix参数可以给蓝图模块添加一个共同的地址
app.register_blueprint(user, url_prefix='/user')
if __name__ == '__main__':
app.run()
运行 main.py
文件
测试
地址栏输入
http://127.0.0.1:5000/user/index