Flask使用分区Blueprint时如何定位各蓝图独立的static文件夹
Flask Blueprint独立static文件夹无法定位问题排查
你给出的Blueprint初始化参数本身配置是正确的,按以下步骤逐一排查即可:
- 确认Blueprint已正确注册到主Flask应用
你需要在项目入口main.py或website包的__init__.py中导入并注册admin蓝图,示例代码如下:from flask import Flask from website.admin.routes import admin app = Flask(__name__) # 注册蓝图,即使添加url_prefix参数也不影响静态文件的匹配规则 app.register_blueprint(admin) if __name__ == '__main__': app.run(debug=True) - 修正模板中静态文件的引用方式
直接写/static/xxx路径会默认匹配主应用的static文件夹,引用蓝图独立static下的资源必须使用蓝图专属的静态资源路由规则,模板中写法如下:<!-- 引用admin蓝图static下的admin_style.css --> <link rel="stylesheet" href="{{ url_for('admin.static', filename='admin_style.css') }}"> <!-- 引用admin蓝图static下的index.js --> <script src="{{ url_for('admin.static', filename='index.js') }}"></script>url_for的第一个参数格式为*蓝图名*.static,这里的蓝图名就是你定义Blueprint时的第一个参数admin。 - 可选:自定义蓝图静态资源访问路径
如果你希望直接通过固定路径访问蓝图静态资源,可以在定义Blueprint时添加static_url_path参数:
配置后直接访问admin = Blueprint('admin', __name__, template_folder="templates", static_folder="static", static_url_path="/admin/static") # 新增这行配置/admin/static/admin_style.css即可获取对应资源。
内容的提问来源于stack exchange,提问作者drawnron
相关产品推荐
相关产品推荐

