首页 > 解决方案 > Django - 消息功能在基于类的视图中不起作用

问题描述

无法在基于类的视图中显示消息。在另一个应用程序的views.py 中,它在我使用基于函数的视图时运行良好。

视图.py:

class PostDeleteView(LoginRequiredMixin, UserPassesTestMixin, SuccessMessageMixin, DeleteView):
        model = Post
        success_url = '/user-profile/'
        success_message = "Your post has been deleted sucessfully!"
    
        def test_func(self):
            post = self.get_object()
            if self.request.user == post.author:
                return True
            return False
            

网址.py:

path('user-profile/', user_views.user_profile, name='user_profile'),

html:

{% if messages %}
        {% for message in messages %}
        <div class="alert alert-{{ message.tags }}">
            {{ message }}
        </div>
        {% endfor %}
{% endif %}

标签: python-3.xdjangodjango-viewsdjango-messages

解决方案


DeleteView不子类FormView所以SuccessMessageMixin不会做任何事情。您必须自己添加消息,覆盖该delete方法似乎是个好地方

def delete(self, request, *args, **kwargs):
    response = super().delete(request, *args, **kwargs)
    messages.success(self.request, 'Your post has been deleted sucessfully!')
    return response

推荐阅读