Сообщения об успехе формы Django на HTML-странице с несколькими формами

Я пытаюсь отобразить 2 формы на странице contact.html в проекте Django. Каждая форма должна отображать сообщение об успехе, когда она успешно отправлена пользователем. Проблема в том, что обе формы на странице показывают одно и то же сообщение об успехе, когда одна из них отправлена. Как я могу привязать сообщение об успехе к отправленной форме на моей HTML странице?

forms.py

from dataclasses import field, fields
from logging import PlaceHolder
from socket import fromshare
from django import forms
from .models import ServiceRequest, Contact, Newsletter

class ContactForm(forms.ModelForm):
    class Meta:
        model = Contact
        fields = ['name','email','phone','message']

class NewsletterForm(forms.ModelForm):
    class Meta:
        model = Newsletter
        fields = ['name','email']

views.py

from http.client import HTTPResponse
from multiprocessing import context
from django.shortcuts import render
from django.views.generic import TemplateView
from .forms import ContactForm, NewsletterForm, ServiceRequest, ServiceRequestForm
from django.http import HttpResponseRedirect
from django.contrib import messages
from django.urls import reverse

def Contact(request):
    contact_form = ContactForm(request.POST or None)
    newsletter_form = NewsletterForm(request.POST or None)
    if request.method == 'POST' and contact_form.is_valid():
        contact_form.save()
        messages.success(request, "Thanks for contacting us!")
        return HttpResponseRedirect(request.path_info)
    elif request.method == 'POST' and newsletter_form.is_valid():
            newsletter_form.save()
            messages.success(request, "Thanks for joining our newsletter!")
            return HttpResponseRedirect(request.path_info)
    context = {
        "contact_form":contact_form,
        "newsletter_form":newsletter_form,
    }
    return render(request, "main/contact.html", context)

contact.html

{% extends "blog/base.html" %}
{% load crispy_forms_tags %}
{% load static %}

{% block content %}
    <div>
        <!-- Message from backend -->
        {% for message in messages %}
            {% if message.tags == 'success' %}
                <div>{{message}}
                    <a href="#" type="button"></a>
                </div>
            {% endif %}
        {% endfor %}
        
        <form method="POST">
            {% csrf_token %}
            <div class="row">
                {{ contact_form.name|as_crispy_field }}
                {{ contact_form.email|as_crispy_field }}
                {{ contact_form.phone|as_crispy_field }}
                {{ contact_form.message|as_crispy_field }}
            </div>
            </div>
            <button type="submit">Submit</button>
        </form>
    </div>

    <div>
        <!-- Message from backend -->
        {% for message in messages %}
            {% if message.tags == 'success' %}
                <div>{{message}}
                    <a href="#" type="button"></a>
                </div>
            {% endif %}
        {% endfor %}
        
        <form method="POST">
            {% csrf_token %}
            <div class="row">
                {{ newsletter_form.name|as_crispy_field }}
                {{ newsletter_form.email|as_crispy_field }}
            </div>
            <button type="submit">Submit</button>
        </form>
    </div>
{% endblock %}

После отправки одной формы на этой странице, обе формы показывают сообщение об успехе:

enter image description here

Вы можете использовать extra_tags фреймворк сообщений Django docs:

Так в представлении:

 messages.success(request, "Thanks for contacting us!", extra_tags='form1')

А в шаблоне:

 {% for message in messages %}
            {% if message.tags == 'success' and message.extra_tags == 'form1' %}
                <div>{{message}}
                    <a href="#" type="button"></a>
                </div>
            {% endif %}
        {% endfor %}
Вернуться на верх