本文详解如何利用
flask 的 `request.endpoint` 在 bootstrap 5 导航栏中自动为当前访问页面添加 `active` 类,实现精准、可靠、无需手动传参的导航状态管理。
在 Flask 应用中集成 Bootstrap 5 导航栏时,一个常见痛点是:手动通过模板变量(如 active_page)控制 active 类容易出错、维护成本高,且无法真正“保持激活”——点击后页面跳转,但状态未同步更新。根本原因在于:你设置的 active_page = "edit_profile.html" 是字符串字面量,而路由匹配应基于视图函数的 endpoint(端点名),而非模板文件名。
正确的做法是在 base.html 的导航栏中直接读取当前请求的 request.endpoint —— 这是 Flask 内置对象,代表当前被调用的视图函数标识符(如 'auth.edit_profile'),稳定、唯一、无需额外传参。
以下是推荐的 Bootstrap 5 兼容实现(注意类名结构需符合 Bootstrap 5 的 .navbar-nav > .nav-item > .nav-link 规范):
✅ 关键要点说明:
? 进阶建议:
可封装为 Jinja 宏提升复用性:
{%- macro nav_link(endpoint, text, **kwargs) -%}
{{ text }}
{%- endmacro -%}
这样,无论用户从何处进入页面,导航栏都能自动、准确地高亮当前激活项,彻底解决“点击后不保持激活”的问题。