1. 静态文件目录
Flask 默认会在应用的根目录下寻找一个名为 static
的文件夹,并将其作为静态文件的存储目录。你可以通过 static_folder
参数来指定不同的静态文件目录路径。
from flask import Flask app = Flask(__name__, static_folder='my_static')
2. 静态文件 URL 路径
默认情况下,静态文件可以通过 /static
路径访问。你可以通过 static_url_path
参数来更改这个路径。
app = Flask(__name__, static_url_path='/assets')
3. 发送静态文件
Flask 提供了 send_static_file
方法来发送静态文件。这个方法会自动注册一个路由来处理静态文件的请求。
@app.route('/static/<path:filename>') def static_files(filename): return app.send_static_file(filename)
4. 测试静态文件
在编写测试时,可以使用 Flask 提供的测试客户端来测试静态文件的访问。
def test_static_files(app, client): rv = client.get('/static/index.html') assert rv.status_code == 200 assert rv.data.strip() == b"<h1>Hello World!</h1>" rv.close()
5. 配置静态文件缓存
你可以通过 SEND_FILE_MAX_AGE_DEFAULT
配置项来设置静态文件的缓存时间。
app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 300 # 设置缓存时间为300秒
6. Blueprint 中的静态文件
在使用 Blueprint 时,也可以为每个 Blueprint 指定静态文件目录和 URL 路径。
from flask import Blueprint admin_bp = Blueprint('admin', __name__, static_folder='admin_static', static_url_path='/admin/static') @admin_bp.route('/static/<path:filename>') def admin_static_files(filename): return admin_bp.send_static_file(filename)
通过以上方式,Flask 提供了灵活且强大的静态文件处理功能,满足不同应用场景的需求。