Предпочтительным методом обслуживать статические файлы, является настройка и использование NGINX или другого веб-сервера, так как они смогут сделать это более эффективно, чем Flask.
Что бы открывать статические файлы при помощи самого Flask, необходимо использовать метод flask.send_from_directory()
, что может быть довольно удобно в некоторых ситуациях:
from flask import Flask, request, send_from_directory
# установка корневого каталога проекта в качестве
# статической папки, можно установить другой.
app = Flask(__name__, static_url_path='')
@app.route('/js/<path:path>')
def send_js(path):
return send_from_directory('js', path)
if __name__ == "__main__":
app.run()
В качестве альтернативы можно использовать flask.send_file()
или app.send_static_file
, но это крайне не рекомендуется, так как это может привести к угрозам безопасности с путями, предоставленными пользователем. Метод flask.send_from_directory
был разработан для контроля этих рисков.