Сообщения 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
Вернуться на верх