如何获取模板内 Flask 蓝图的名称?

Nic*_*ick 1 python flask

我有一个用 Flask 构建的网站。它有几个部分,每个部分都有一个专用的蓝图。每个蓝图中的模板都扩展了一个基本模板,该模板具有每个页面的基本布局,包括带有每个部分选项卡的导航栏。

我想让基本模板突出显示当前选项卡,因此它需要知道哪个蓝图的视图正在处理请求。

我想出的一种方法是before_request向每个蓝图添加一个处理程序并将名称存储在g

bp = Blueprint('blog', __name__, url_prefix='/blog')

@bp.before_request
def set_bp_name():
    g.section = 'blog'
Run Code Online (Sandbox Code Playgroud)

但是 Flask 必须知道哪个蓝图正在处理请求(如果有),并且蓝图当然知道它自己的名称。有没有一种方法可以让模板获取当前蓝图的名称,而不需要修改每个蓝图?

Nic*_*ick 6

是的。很简单:request.blueprint

request对象是Flask 为所有模板提供的少数几个对象之一(与 一起)。g它包含blueprint属性,该属性是处理当前请求的蓝图的名称。