Показ сообщений с помощью фреймворка 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')