Flask静态文件夹加载异常:子路由部署后图片路径错误求助
解决方案
以下是针对这个Flask静态文件加载问题的具体解决步骤:
1. 配置Flask应用的子路径前缀
在app.py中添加APPLICATION_ROOT配置,让Flask明确知晓应用挂载的子路由前缀:
from flask import Flask, render_template app = Flask(__name__) app.config['APPLICATION_ROOT'] = '/mywebsite' # 指定子路由前缀 @app.route('/') def index(): return render_template('index.html') if __name__ == '__main__': app.run(debug=True, host='0.0.0.0', port=8000)
2. 使用Flask内置函数生成静态文件路径
修改templates/index.html中的图片引用方式,改用url_for函数生成正确的静态资源URL,避免相对路径的解析偏差:
This is index page. <img src="{{ url_for('static', filename='aaa.jpg') }}" alt="">
原理说明
之前用相对路径static/aaa.jpg时,浏览器会基于当前访问的URL(/mywebsite/)解析路径,导致请求地址不符合Flask的静态资源路由规则。而url_for会结合APPLICATION_ROOT的配置,自动生成带前缀的完整路径/mywebsite/static/aaa.jpg,确保静态资源能被正确加载。
内容的提问来源于stack exchange,提问作者Yao-Chung
相关产品推荐
相关产品推荐

