Это машинный перевод текста, который может содержать ошибки!
Вы должны разработать
Панель — это веб-страница, которая отображает информацию в наглядной форме. В этом задании вам будут предоставлены примеры данных о различных устройствах в сети, а также потребуется использовать Flask и Jinja для представления этой информации.
Цель состоит не в том, чтобы создавать реальную систему мониторинга прямо сейчас. Прежде всего здесь нужно попрактиковаться в следующем:
Flask маршруты (routes) шаблоны (templates) - передаче информации из Python в HTML
- проверках условий с помощью
if и циклахfor в Jinja - созданию аккуальной и удобного пользовательского интерфейса сайта
Теория
Вы можете найти теорию в разделе
Особое внимание уделите разделу о
Если вам нужна дополнительная информация, вы также можете воспользоваться официальной документацией Flask здесь:
Что-то кроме Flask?
Если вы хотите использовать другой фреймворк, сначала спросите преподавателя.
Данные, которые вы можете использовать ✅
Вы можете использовать следующие данные в качестве отправной точки нажмите здесь
devices = [
{
"name": "Главные маршрутизаторы",
"ip": "192.168.1.1",
"hostname": "router.local",
"device_type": "Маршрутизатор",
"status": "online",
"response_time": 12,
"location": "Серверная комната",
"last_checked": "14:32:10",
"uptime": "12 дней",
"open_ports": [53, 80, 443],
"os": "RouterOS",
"notes": "Главный маршрутизатор сети"
},
{
"name": "Веб-сервер",
"ip": "192.168.1.20",
"hostname": "webserver.local",
"device_type": "Сервер",
"status": "online",
"response_time": 34,
"location": "Серверная комната",
"last_checked": "14:32:12",
"uptime": "4 дня",
"open_ports": [22, 80, 443],
"os": "Ubuntu Server",
"notes": "Запускает внутренний веб-сайт"
},
{
"name": "Принтер",
"ip": "192.168.1.50",
"hostname": "printer-01.local",
"device_type": "Принтер",
"status": "offline",
"response_time": None,
"location": "Класс 204",
"last_checked": "14:32:14",
"uptime": None,
"open_ports": [],
"os": "Неизвестно",
"notes": "Не ответил при последней проверке"
},
{
"name": "Компьютер учителя",
"ip": "192.168.1.101",
"hostname": "teacher-pc.local",
"device_type": "Компьютер",
"status": "online",
"response_time": 18,
"location": "Класс 204",
"last_checked": "14:32:16",
"uptime": "6 часов",
"open_ports": [445],
"os": "Windows 11",
"notes": ""
},
{
"name": "NAS",
"ip": "192.168.1.30",
"hostname": "storage.local",
"device_type": "Сервер хранения данных",
"status": "warning",
"response_time": 87,
"location": "Серверная комната",
"last_checked": "14:32:18",
"uptime": "38 дней",
"open_ports": [22, 80, 443, 445],
"os": "TrueNAS",
"notes": "Высокое время отклика"
}
]
Вам не нужно отображать всю информацию. Самостоятельно решите, что подходит для вашей панели управления. Вы также можете изменять, добавлять или удалять данные по своему желанию, если считаете, что какие-то из них неточны (например, может быть, время работы должно выражаться в секундах? 🤔).
Задача
1. Создайте панель управления (dashboard)
Создайте веб-страницу, которая отображает информацию об устройствах в сети.
Внешний вид панели управления зависит от вас.
Вы можете использовать, например:
- карточки для каждого устройства
- таблицы
- индикаторы состояния
- разделы
- иконки
- цвета
- статистику или сводные данные
Панель управления должна быть легко понятной при открытии страницы.
2. Использование Flask и маршрутов
Приложение должно использовать Flask.
Необходимо иметь минимум:
- один маршрут для отображения главной страницы/дашборда
- еще один дополнительный маршрут с другой функцией
Назначение дополнительного маршрута вы определяете сами.
Он может, например:
- отображать информацию об одном конкретном устройстве
- показывать только устройства в автономном режиме (offline)
- отображать отдельную страницу статуса
- показывать более подробную информацию
- отображать простую страницу «О приложении» («About»)
3. Использование шаблонов
HTML-страницы должны находиться в папке с названием
Данные следует передавать из кода на Python в шаблон с помощью Flask. Для динамического отображения информации нужно использовать Jinja.
В решении необходимо использовать:
- переменные
- цикл
for - проверку условия
if
Таким образом, информацию обо всех устройствах не следует вручную прописывать в HTML-коде.
4. Отображение статуса в наглядной форме
Дашборд должен упрощать просмотр состояния устройств.
Например:
- 🟢 Онлайн
- 🟡 Предупреждение
- 🔴 Не в сети
Вы можете использовать текст, CSS, иконки или другие визуальные решения.
5. Сделайте дашборд своим собственным
Не существует единственно правильного способа решить эту задачу.
Подумайте над следующими вопросами:
- Какая информация наиболее важна?
- Что пользователь должен увидеть в первую очередь?
- Что не нужно отображать?
- Как можно четко отобразить статус?
- Как сделать страницу аккуратной, даже если устройств много?
- Вы можете использовать CSS и при необходимости JavaScript, если хотите.
Требования
Решение должно:
- использовать Python и Flask
- использовать минимум два маршрута (routes)
- использовать минимум один шаблон HTML
- передавать данные из Python в шаблон
- использовать Jinja
- использовать минимум один цикл
<emp>for</emp> - использовать минимум одну проверку
<emp>if</emp> - отображать несколько записей из набора данных
- иметь явный способ отобразить статус
Готово?
Вызов! - Улучшите дашборд
Если вы закончите, вы можете расширить решение.
Например, вы можете:
- создать детальную страницу для каждого устройства
- фильтровать устройства по статусу
- сортировать устройства
- отображать количество устройств онлайн/офлайн
- показывать среднее время отклика
- добавить поиск или фильтрацию
- добавить больше устройств
- создать графики или другую визуализацию
- сделать дашборд адаптивным
- разработать более продуманный дизайн
Дополнительное задание — Проверка реального сети
Если вы хотите пойти дальше, можно исследовать способы проверки в Python того, отвечает ли реальная машина в сети. Например, можно изучить:
ping- Nmap
- порты и службы
Это не является обязательным требованием для основной задачи.
Доставка
Сделайте это
Отдайте работу, коммитнув свой код в
Репозиторий должен содержать:
- Python-код для приложения на Flask
- Шаблоны HTML
- Файлы CSS и JavaScript (если есть)
- Краткое объяснение того, как работает решение
- Краткое объяснение того, как вы использовали
routes иtemplating
Объяснение может находиться, например, в отдельном файле .md.