当前位置: 首页 > 工具软件 > Blueprint > 使用案例 >

蓝图(blueprint)

岳俊晖
2023-12-01

Blueprint

一. 什么是蓝图

当你的项目有很多模块时,放在一起的话,既不方便查看,耦合度又太高。所以Flask提供了蓝图(Blueprint)功能。蓝图使用起来就像应用当中的子应用一样,可以有自己的模板,静态目录,有自己的视图函数和URL规则,蓝图之间互相不影响。但是它们又属于应用中,可以共享应用的配置。对于大型应用来说,我们可以通过添加蓝图来扩展应用功能,而不至于影响原来的程序。不过有一点要注意,目前Flask蓝图的注册是静态的,不支持可插拔。

二. 初识蓝图

蓝图/Blueprint对象用起来和一个应用Flask对象差不多,最大的区别在于一个 蓝图对象没有办法独立运行,必须将它注册到一个应用对象上才能生效

使用蓝图可以分为三个步骤

  1. 导入蓝图模块, 创建蓝图对象
news_blue=Blueprint('news',__name__)
  1. 使用创建的蓝图对象实现路由
@admin.route('/news_blue')
def news_blue():
    return 'news_blue'
  1. 在应用对象上注册这个蓝图对象
app.register_blueprint(news_blue)

当这个应用启动后,通过/news/可以访问到蓝图中定义的视图函数

三. 目录模块形式

通常在开发项目中,路由需要拆分到一些目录模块中,每个模块内可以拥有独立的模板文件夹、静态文件夹等.此时写法需要略微调整.仍然是蓝图的三个步骤

  1. 导入蓝图模块, 创建蓝图对象, 同时导入子模块
    在new/init.py内,
# 1. 导入蓝图模块, 创建蓝图对象
from flask import Blueprint

news_blue = Blueprint('news', __name__)

# 这里需要导入子模块, 否则程序不知道哪个文件使用了蓝图对象
from . import views

这里的‘news’是视图函数的前缀名,在之后会用 url_for 引用视图函数所渲染的网页,name后还有一个 url_prefix='/admin' 这是给访问地址加前缀的,防止重名。

  1. 导入创建的蓝图对象, 使用创建的蓝图对象实现路由
    在new/views.py内
# 2. 使用蓝图对象实现路由
from . import news_blue
@news_blue.route('/news_list')
def news_list():
    return 'news_list'
  1. 在应用对象上注册这个蓝图对象(跟单文件一样)
app.register_blueprint(news_blue)

4.简单的总结
蓝图的使用步骤:
1.导入蓝图,创建蓝图对象
2.使用蓝图对象,修改路由
3.在app(flask对象)创建的地方注册蓝图

 类似资料: