Как мне прошить сообщение в django?

#django

#django

Вопрос:

Итак, я хочу, чтобы мое приложение django уведомляло пользователей об определенных событиях с помощью флэш-сообщений. Например, сообщение об ошибке или сообщение об успешном завершении. Я знаю, что в flask есть встроенный flash метод. Но есть ли какой-либо эквивалент в django? Если да, то не могли бы вы показать мне, как его использовать и оформить с помощью bootstrap. Заранее спасибо.

Ответ №1:

Платформа сообщений Django работает очень хорошо и проста в использовании с bootstrap.

Шаг 1. Поместите сообщение в ту точку потока, где вы хотите, чтобы сообщение запускалось. Это пример сообщения, которое выдается, когда форма успешно сохраняет данные формы:

  if form.is_valid():
        for fs in formsets:
            if fs.is_valid():
                # Messages test start
                messages.success(request, "Profile updated successfully!")
                # Messages test end
                fs.save()
            else:
                messages.error(request, "It didn't save!")
 

Когда сообщение запускается, оно не появляется автоматически. Но оно хранится в очереди.

Шаг 2. Добавьте код в свой шаблон для отображения сообщений:

 {% if messages %}
    {% for message in messages %}
        {{ message }}
    {% endfor %}
{% endif %}
 

Это приведенная выше простая возможная реализация. Пример того же самого, но с тостами bootrstrap будет выглядеть примерно так:

 {% if messages %} 
    {% for message in messages %}
        <div class="toast" role="alert" aria-live="assertive" aria-atomic="true" data-autohide="false">
            <div class="toast-header">
                <div class="toast-square"></div>amp;nbsp;
                <strong class="mr-auto">Accounts</strong>
                <small>Changes saved</small>
                <button type="button" class="ml-2 mb-1 close" data-dismiss="toast" aria-label="Close">
                    <span aria-hidden="true">amp;times;</span>
                </button>
            </div>
            <div class="toast-body">
            {{ message }}
            </div>
        </div>
    {% endfor %} 
{% endif %} 
 

Ответ №2:

Вы могли бы использовать фреймворк message, поставляемый с Django.