Использование messages framework

При работе с пользовательскими действиями может потребоваться информировать пользователей о результатах их действий. Джанго имеет встроенную платформу сообщений, которая позволяет отображать уведомления для пользователей. Платформа сообщений расположена на уровне django.contrib.messages и она включена в список INSTALLED_APPS по умолчанию. Обратите внимание на то, что в файле параметров содержится программное обеспечение по имени django.contrib.messages.middleware.MessageMiddleware в списке MIDDLEWARE_CLASSES . Платформа сообщений предоставляет простой способ добавления сообщений пользователям. Сообщения хранятся в базе данных и отображаются в следующем запросе пользователя. Можно использовать структуру сообщений в представлениях, импортируя модуль сообщений и добавляя новые сообщения с помощью простых комбинаций клавиш.

from django.contrib import messages
messages.error(request, 'Something went wrong')

Новые сообщения можно создавать с помощью метода add_message() или любого из следующих методов быстрого вызова:

  • success() : Сообщения отображаемые после успешного выполнения действия
  • info() : Информационные сообщения
  • warning() : Предупреждения
  • error() : Сообщения об ошибках
  • debug() : Сообщения для отладки, которые будут удалены или пропущены в продакшн версии сайта

Поскольку платформа сообщений применяется глобально к проекту, мы можем отображать сообщения для пользователя в нашем базовом шаблоне. Откройте шаблон base.html и добавьте следующий код между<div>с ID header и элементом<div> с ID content:

{% if messages %}
    <ul class="messages">
        {% for message in messages %}
            <li class="{{ message.tags }}">
                {{ message|safe }}
                <a href="#" class="close">✖</a>
            </li>
        {% endfor %}
    </ul>
{% endif %}

Платформа сообщений включает обработчик контекста, который добавляет переменную messages в контекст запроса. Поэтому можно использовать эту переменную в шаблонах для отображения текущих сообщений пользователю.

Измените файл views.py приложения и создайте edit view:

from django.contrib import messages

@login_required
def edit(request):
    if request.method == 'POST':
    # ...
        if user_form.is_valid() and profile_form.is_valid():
            user_form.save()
            profile_form.save()
            messages.success(request, 'Profile updated successfully')
        else:
            messages.error(request, 'Error updating your profile')
    else:
        user_form = UserEditForm(instance=request.user)
        # ...

При обновлении профиля пользователь получит сообщение об успешном выполнении. Если какая-либо из форм невалидна, то добавляется сообщение об ошибке.

Откройте в браузере http://127.0.0.1:8000/account/edit/ и отредактируйте свой профиль. После успешного обновления профиля вы увидите следующее сообщение:

Если же форма окажется невалидной, сообщение будет таким:

results matching ""

    No results matching ""