Сообщить об ошибке.

Как обслуживать статические файлы в Flask.

Предпочтительным методом обслуживать статические файлы, является настройка и использование 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 был разработан для контроля этих рисков.

Смотрим реальный пример для отдачи файлов favicon.svg, robots.txt и sitemap.xml, которые лежат в директории static:

# функция, которая обрабатывает отдачу
# статики из корневой директории сайта
@app.route('/favicon.svg')
@app.route('/sitemap.xml')
@app.route('/robots.txt')
def static_root():
    return send_from_directory(app.static_folder, request.path[1:])