详解Django的 get_success_message() 函数:获取表单验证成功后的消息

  • Post category:Python

Django的get_success_message()函数是一种钩子函数,只有在重定向成功后才会被调用。它的主要作用是在完成某一项操作之后向用户展示一个成功信息的消息。该函数需要定义在views.py文件中,并注入SuccessMessageMixin类中,以提供默认的成功消息文本。

下面是get_success_message()函数的使用方法:

首先,需要在views.py文件中定义一个类,并注入SuccessMessageMixin。这个类必须继承自Django中的FormView或DeleteView视图。

然后,在类的内部定义get_success_message()函数,声明success_message的返回值为一个成功消息的文本。

最后,将该成功消息注入系统的上下文环境中,在回应模板中将该变量调用即可。

以下是两个具体的实例说明:

实例1:编写一个ArticleCreateView视图,当用户成功发布一篇文章时,向用户展示一个成功信息的消息

from django.views.generic.edit import CreateView
from django.contrib.messages.views import SuccessMessageMixin
from django.urls import reverse_lazy
from .models import Article

class ArticleCreateView(SuccessMessageMixin, CreateView):
    model = Article
    fields = ['title', 'content']
    success_url = reverse_lazy('blog:article_list')
    success_message = "Your article was created successfully!"

    def get_success_message(self, cleaned_data):
        return self.success_message

在这个例子中,我们定义了一个ArticleCreateView视图,并注入了SuccessMessageMixin。接着,我们在内部定义了get_success_message()函数,并指定success_message为 “Your article was created successfully!”。最后,我们将该成功消息传递给模板,以便向用户显示。

实例2:编写一个WidgetsDeleteView视图,当用户成功删除一个部件时,向用户展示一个成功信息的消息

from django.views.generic.edit import DeleteView
from django.urls import reverse_lazy
from .models import Widget

class WidgetDeleteView(SuccessMessageMixin, DeleteView):
    model = Widget
    success_url = reverse_lazy('widgets-list')
    success_message = 'Widget deleted successfully!'

    def delete(self, request, *args, **kwargs):
        messages.success(self.request, self.success_message)
        return super(WidgetDeleteView, self).delete(request, *args, **kwargs)

在这个例子中,我们定义了一个WidgetDeleteView视图,并注入了SuccessMessageMixin。我们在内部定义了success_message并指定为 ‘Widget deleted successfully!’。在delete()函数中,我们将该消息使用messages.success()注入到系统的上下文环境中。最后,我们将该成功消息传递给模板,以便向用户显示。

总之,在使用get_success_message()函数时,需要注意函数的调用时机和返回结果,并根据实际场景具体调整参数。