Статические файлы Flask
Любое полноценное веб-приложение зависит от статических ресурсов, таких как CSS, JavaScript и изображения.
В этой главе рассказывается, как Flask управляет статическими файлами и обслуживает их.
Соглашение о статических файлах по умолчанию
Flask по умолчанию из каталога приложенияstatic/Эта папка служит для статических файлов.
Вам просто нужно создать эту папку и поместить в неё статические ресурсы:
myflaskapp/
├── app.py
├── templates/
│ └── index.html
└── static/
├── css/
│ └── style.css # 样式文件
├── js/
│ └── main.js # JavaScript 文件
└── images/
└── logo.png # 图片文件
Ссылки на статические файлы в шаблонах
Не задавайте пути жёстко; используйтеurl_for('static', filename='...'), чтобы сгенерировать URL для статических файлов.
Преимущество в том, что даже если приложение позже будет смонтировано по подпути (например,/myapp), URL также будет автоматически корректироваться.
Пример
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ПРИМЕР Flask Tutorial</title>
<!-- Ссылка на CSS-файл -->
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
<!-- Иконка сайта favicon -->
<link rel="icon" href="{{ url_for('static', filename='images/favicon.ico') }}">
</head>
<body>
<!-- Ссылка на изображение -->
<img src="{{ url_for('static', filename='images/logo.png') }}" alt="Логотип EXAMPLE" width="200">
<h1>Добро пожаловать в EXAMPLE</h1>
<p>Это веб-приложение, созданное с помощью Flask.</p>
<!-- Ссылка на файл JavaScript -->
<script src="{{ url_for('static', filename='js/main.js') }}"></script>
</body>
</html>
Пользовательский путь к статическим файлам
Если вы не хотите использовать стандартную папкуstatic/, её можно настроить при создании приложения Flask:
Пример
# static_folder: путь к папке на сервере
# static_url_path: путь доступа в URL
app = Flask(__name__,
static_folder="public", # Статические файлы размещаются в каталоге public/
static_url_path="/assets") # Доступ осуществляется по пути /assets
# Теперь доступ к /assets/css/style.css соответствует файлу public/css/style.css
| Параметр | Значение по умолчанию | Описание |
|---|---|---|
| static_folder | "static" | Локальная папка для хранения статических файлов |
| static_url_path | None (использует имя static_folder) | Публичный URL-префикс для статических файлов. |
Пример CSS-файла
Создайте базовую таблицу стилей, чтобы страница выглядела более профессионально:
Пример
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
max-width: 800px;
margin: 0 auto;
padding: 20px;
line-height: 1.6;
color: #333;
}
h1 {
color: #2c3e50;
border-bottom: 2px solid #3498db;
padding-bottom: 10px;
}
nav {
background: #f8f9fa;
padding: 10px;
border-radius: 4px;
margin-bottom: 20px;
}
nav a {
color: #3498db;
text-decoration: none;
margin-right: 15px;
}
footer {
margin-top: 40px;
padding-top: 20px;
border-top: 1px solid #eee;
color: #999;
font-size: 14px;
}
Посетитеhttp://127.0.0.1:5000/, результат будет следующим:

Различия между средами разработки и производственной средой
Другие расширенияВстроенный в Flask сервер статических файлов подходит только длясреды разработки。
В производственных средах профессиональные веб-серверы, такие как Nginx и Apache, должны напрямую обрабатывать статические файлы, что гораздо эффективнее, чем обслуживать их через код Python.
Подробное описание развертывания в производственной среде будет представлено в следующих главах.