Статическими называются файлы, которые изменяются редко. К этому типу относят файлы CSS, JavaScript, шрифты и другие. По умолчанию Flask ищет такие файлы в директории static, находящейся в папке приложения. Однако это можно изменить: достаточно указать другой путь с помощью параметра static_folder при инициализации приложения:

app = Flask(__name__, static_folder="static_dir")

Теперь стандартное местоположение для статических файлов будет перемещено в папку static_dir внутри приложения.

Пока не требуется изменять расположение папки по умолчанию — static. Сначала создайте папку static в директории flask_app и разместите в ней CSS-файл style.css со следующим содержимым.

body {
  color: red
}

Как упоминалось в главе «Основы Flask», автоматически добавляется маршрут в формате /static/<filename> для статических файлов. Осталось только создать URL, используя функцию url_for():

<script src="{{ url_for('static', filename='jquery.js') }}"></script>

Результат:

<script src="/static/jquery.js"></script>

Теперь нужно открыть шаблон index.html и добавить тег <link>:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
</head>

...

Если сервер не активирован, запустите его и перейдите по адресу http://localhost:5000/. На новой странице должен отобразиться текст красного цвета:

Добавление стилей во Flask

Этот подход к работе со статическими файлами подходит лишь для разработки. Чтобы создать полномасштабное приложение, используется сервер типа Nginx или Apache.

Вопросы для самопроверки:

  1. Какие файлы называются статическими в контексте Flask?
  2. Где Flask по умолчанию ищет статические файлы?
  3. Чем отличается подход к работе со статическими файлами в разработке и в полномасштабном приложении?