JavaRush /Курси /Модуль 3: Django /Вступ до Django Message Framework

Вступ до Django Message Framework

Модуль 3: Django
Рівень 14 , Лекція 0
Відкрита

Давайте уявимо цілком реальну ситуацію: користувач заповнив форму і відправив її. Система успішно зберегла дані або виявила помилку. Як ви повідомите про це користувачу? Напишете текст червоними літерами в кутку екрану? А що якщо таких сповіщень буде кілька? У цьому випадку вам стане в нагоді Django Message Framework — вбудований інструмент Django, який призначений для відображення повідомлень користувачу.

Django Message Framework надає купу переваг для розробника. Ось деякі з них:

  1. Простота використання: додавати повідомлення можна з представлень, а відобразити їх — у шаблонах.
  2. Гнучкість: підтримує кілька рівнів повідомлень (наприклад, успіх, помилка, попередження).
  3. Інтеграція: готовий до використання в будь-якому Django-проєкті "з коробки".
  4. Зручність розробки: сповіщення працюють у будь-якому місці, навіть якщо ви використовуєте редиректи.

Основні компоненти Message Framework

Що ховається за "магією" Message Framework? У нього є два компоненти, які виконують левову частку роботи:

  1. Клас Message: представляє повідомлення, його текст і рівень (наприклад, SUCCESS, ERROR).
  2. Клас Storage: це "сховище" повідомлень. Воно керує додаванням, читанням і видаленням повідомлень.

Типова схема роботи виглядає так:

  1. Ви додаєте повідомлення (екземпляр класу Message) у представленні.
  2. Повідомлення потрапляє у сховище (Storage).
  3. Після цього повідомлення "виймаються" та відображаються у шаблоні.

Уявіть це як стікер, який ви прикріпили до монітора. Як тільки користувач побачив його, хтось (у цьому випадку 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;
}

Тепер ваші повідомлення будуть виділятися, і користувач точно їх помітить.

Практичне завдання

  1. Додайте Django Message Framework у свій проєкт.
  2. Напишіть представлення, яке надсилає кілька типів повідомлень (успіх, помилка тощо).
  3. Налаштуйте відображення повідомлень у шаблоні та стилізуйте їх за допомогою CSS.

Якщо ви вже не можете дочекатися, коли почнете бачити красиві сповіщення у своєму проєкті, вітаю — ви на правильному шляху! У наступних лекціях ми заглибимося у використання та кастомізацію цього інструменту.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ