Показ сообщений с помощью фреймворка django messages из одного конкретного представления

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

после установки приложения, промежуточные модули и контекстный процессор для сообщений установлены в settings.py все сообщения, которые генерируются, отображаются в моем шаблоне контакта, например, Login success, logout success, и так далее.

Я просто хочу показать сообщение.success в темплейте контакта, который я определил в представлении контакта:

def contact(request):
    if request.method == 'POST':
        Contact.objects.create(
            first_name=request.POST.get('first_name', ''),
            last_name=request.POST.get('last_name', ''),
            email=request.POST.get('email', ''),
            subject=request.POST.get('subject', ''),
            message=request.POST.get('message', ''),
        )
        # I want to show only this message on 'POST' success of this view
        messages.success(request, "Your message has been submitted.")
    return render(request, 'contact/contact.html')

мой шаблон:

<div class="success-message">
    {% if messages %}
        <ul class="messages">
            {% for message in messages %}
                <li class="{{ message.tags }}">
                    <h4 class="alert-success text-center" style="padding-top: 5px; padding-bottom: 5px;">
                        {{ message }}
                    </h4>
                </li>
            {% endfor %}
         </ul>
     {% endif %}

</div>

мой шаблон показывает все сообщения, которые генерируются на сайте, наряду с тем, которое я хочу. Как предотвратить другие сообщения, кроме того, которое я хочу?

Каков обходной путь для решения этой проблемы, может ли кто-нибудь помочь мне в этом?

Вы должны очистить сообщения, затем добавить сообщение об успехе, а затем отобразить шаблон.

def contact(request):
    if request.method == 'POST':
        ...
        list(messages.get_messages(request))
        messages.success(request, "Your message has been submitted.")
return render(request, 'contact/contact.html')
Вернуться на верх