Давайте уявимо цілком реальну ситуацію: користувач заповнив форму і відправив її. Система успішно зберегла дані або виявила помилку. Як ви повідомите про це користувачу? Напишете текст червоними літерами в кутку екрану? А що якщо таких сповіщень буде кілька? У цьому випадку вам стане в нагоді Django Message Framework — вбудований інструмент Django, який призначений для відображення повідомлень користувачу.
Django Message Framework надає купу переваг для розробника. Ось деякі з них:
- Простота використання: додавати повідомлення можна з представлень, а відобразити їх — у шаблонах.
- Гнучкість: підтримує кілька рівнів повідомлень (наприклад, успіх, помилка, попередження).
- Інтеграція: готовий до використання в будь-якому Django-проєкті "з коробки".
- Зручність розробки: сповіщення працюють у будь-якому місці, навіть якщо ви використовуєте редиректи.
Основні компоненти Message Framework
Що ховається за "магією" Message Framework? У нього є два компоненти, які виконують левову частку роботи:
- Клас
Message: представляє повідомлення, його текст і рівень (наприклад,SUCCESS,ERROR). - Клас
Storage: це "сховище" повідомлень. Воно керує додаванням, читанням і видаленням повідомлень.
Типова схема роботи виглядає так:
- Ви додаєте повідомлення (екземпляр класу Message) у представленні.
- Повідомлення потрапляє у сховище (Storage).
- Після цього повідомлення "виймаються" та відображаються у шаблоні.
Уявіть це як стікер, який ви прикріпили до монітора. Як тільки користувач побачив його, хтось (у цьому випадку Django) акуратно його зняв.
Чому Message Framework важливий?
Насправді, додавання повідомлень — важлива частина будь-якого сучасного застосунку. Користувачі хочуть отримувати миттєвий зворотній зв'язок: все пройшло успішно, чи потрібно щось виправити, чи сталася помилка. Ми всі звикли до сповіщень у системах, і відсутність таких повідомлень може зробити інтерфейс непривітним.
Ви можете, наприклад, легко створити такі повідомлення для користувача:
- Успіх: "Ваше замовлення успішно оформлено".
- Помилка: "Помилка при збереженні даних, повторіть пізніше".
- Попередження: "Ваша сесія закінчиться через 5 хвилин".
- Інформація: "На нашому сайті знижки до кінця тижня".
Вбудовані рівні повідомлень
Django підтримує кілька стандартних рівнів повідомлень. Кожен рівень відповідає певному типу сповіщень:
| Рівень | Призначення |
|---|---|
DEBUG |
Для внутрішніх повідомлень під час розробки |
INFO |
Для інформаційних повідомлень |
SUCCESS |
Сповіщає про те, що дія виконана успішно |
WARNING |
Для попереджень про можливі проблеми |
ERROR |
Для сповіщень про помилки |
Кожен рівень має своє "числове" значення, допомагаючи Django визначати пріоритет повідомлень.
Інтеграція Message Framework у проєкт
Базова активація
Відкрийте файл налаштувань settings.py. У більшості випадків нічого додатково встановлювати не потрібно, оскільки Message Framework активований за замовчуванням. Перевіримо, що додаток django.contrib.messages знаходиться у списку INSTALLED_APPS:
INSTALLED_APPS = [
...
'django.contrib.messages',
...
]
Зверніть також увагу, що в шаблонах ви повинні підключити context processor для роботи з повідомленнями. Цей рядок вже включений у стандартний settings.py:
TEMPLATES = [
{
...
'OPTIONS': {
'context_processors': [
...
'django.contrib.messages.context_processors.messages',
],
},
},
]
Тепер ми можемо починати надсилати та відображати повідомлення.
Приклад роботи з Message Framework
Додавання повідомлень у view
Давай додамо повідомлення у функціональному view. Відкриймо наш файл views.py:
from django.contrib import messages
from django.shortcuts import render, redirect
def my_view(request):
# Приклад успішного повідомлення
messages.success(request, "Дані успішно збережено!")
# Приклад інформаційного повідомлення
messages.info(request, "Це просто інформація для вас.")
# Приклад повідомлення про помилку
messages.error(request, "Сталася помилка під час збереження!")
# Переходимо на іншу сторінку
return redirect('home')
Відображення повідомлень у шаблоні
Після того як ми додали повідомлення у view, потрібно їх вивести на екран. У вашому файлі шаблону (наприклад, base.html чи будь-якому іншому) додай наступний код:
{% if messages %}
<ul class="alert-list">
{% for message in messages %}
<li class="alert {{ message.tags }}">
{{ message }}
</li>
{% endfor %}
</ul>
{% endif %}
message.tags: містить CSS-класи для рівня повідомлення (наприклад,successабоerror).message: текст самого повідомлення.
Якщо на цій сторінці були додані які-небудь повідомлення, вони відобразяться у форматі списку.
Стилізація повідомлень
Ваші сповіщення виглядатимуть набагато краще з CSS. Давайте додамо базові стилі для кожного рівня повідомлень. Наприклад:
.alert {
padding: 10px;
margin-bottom: 10px;
border-radius: 5px;
}
.alert.success {
background-color: #d4edda;
color: #155724;
}
.alert.error {
background-color: #f8d7da;
color: #721c24;
}
.alert.info {
background-color: #d1ecf1;
color: #0c5460;
}
.alert.warning {
background-color: #fff3cd;
color: #856404;
}
Тепер ваші повідомлення будуть виділятися, і користувач точно їх помітить.
Практичне завдання
- Додайте Django Message Framework у свій проєкт.
- Напишіть представлення, яке надсилає кілька типів повідомлень (успіх, помилка тощо).
- Налаштуйте відображення повідомлень у шаблоні та стилізуйте їх за допомогою CSS.
Якщо ви вже не можете дочекатися, коли почнете бачити красиві сповіщення у своєму проєкті, вітаю — ви на правильному шляху! У наступних лекціях ми заглибимося у використання та кастомізацію цього інструменту.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ