Django的SuccessMessageMixin不使用DeleteView

时间:2018-02-13 22:52:41

标签: python django

关注https://docs.djangoproject.com/en/2.0/ref/contrib/messages/#adding-messages-in-class-based-views后,我尝试向DeleteView添加成功消息:

from django.views.generic import DeleteView
from django.contrib.messages.views import SuccessMessageMixin


class SessionDelete(SuccessMessageMixin, DeleteView):
    model = Session
    success_url = reverse_lazy('dashboard:sessions')
    success_message = "Session %(id)s (%(session_type)s) was deleted successfully"

但是,我注意到这在Django 1.11.9中不起作用。我发现了这个拉取请求https://github.com/django/django/pull/5992,但由于不活动似乎已关闭。我是否正确理解成功消息仍无法正常使用DeleteView

1 个答案:

答案 0 :(得分:1)

  1. 导入 from django.contrib import messages

  2. 将此用作您的视图或将其转换为 mixin。

class SessionDelete(DeleteView):
    model = Session
    success_url = reverse_lazy('dashboard:sessions')
    success_message = "Session %(id)s (%(session_type)s) was deleted successfully"
    
    def delete(self, request, *args, **kwargs):
        messages.success(self.request, self.success_message, 'danger')

        return super(SessionDelete, self).delete(request, *args, **kwargs)
  1. 您不需要 SuccessMessageMixin 它现在工作正常!