Сообщения Django не отображаются в моем html-шаблоне
Я пытаюсь показать сообщение об успехе после удаления объектов со страницы просмотра списка. вот мой код:
#это представление удаления
class DeleteNoti(DeleteView):
model = Notifications
def get_context_data(self, **kwargs):
data = super().get_context_data(**kwargs)
data['messages'] = messages.add_message(self.request, messages.INFO, 'Notification deleted')
return data
success_url = reverse_lazy('notifications:notify')
Это моя html страница, где я перечисляю все мои объекты и добавляю функцию удаления:
#using this for showing success message
{% if messages %}
<ul class="messages">
{% for message in messages %}
<div class="alert alert-success" role="alert">
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</div>
</ul>
{% endif %}
#this code deleting my objects but I am not seeing any message after successful delete.
<form method="POST" action="{%url 'notifications:delete-noti' i.pk%}"> {% csrf_token %} <button type="submit" class="ml-2 mb-1 close" data-dismiss="toast" aria-label="Close"></form>
Если вы сделаете POST или DELETE запрос к DeleteView
, он не отобразит шаблон, а просто вернет перенаправление.
Таким образом, вы должны переопределить метод .delete(…)
и добавить сообщение, если вызов super().delete()
не возвращает ошибку:
class DeleteNoti(DeleteView):
model = Notifications
success_url = reverse_lazy('notifications:notify')
def delete(self, *args, **kwargs):
response = super().delete(*args, **kwargs)
messages.add_message(self.request, messages.INFO, 'Notification deleted')
return response