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

  • Post category:Python

Django 的 get_success_message() 是一个用于在 Django 中生成成功信息提示的函数,它会在成功执行某个操作后返回一个字符串,以便在页面中展示成功操作的提示信息。它适用于 Django 中的表单、视图以及任何处理成功操作的场景。

使用 get_success_message() 函数,可以方便地在用户完成某项操作后给出友好的提示信息。例如,当用户成功提交一个表单时,我们可以在视图中调用 get_success_message() 函数来返回一个字符串,以便在页面中展示提交成功的提示信息,从而提高用户体验。

以下是关于 get_success_message() 函数的详细使用方法:

1. 在视图中使用 get_success_message()

在 Django 视图中,如果我们需要在用户完成某项操作(如提交表单)后展示提示信息,可以在视图中重写 get_success_message() 函数。例如:

from django.views.generic.edit import CreateView
from django.urls import reverse_lazy

class CreateTaskView(CreateView):
    template_name = 'task_form.html'
    model = Task
    fields = ['name', 'description']
    success_url = reverse_lazy('task_list')

    def get_success_message(self, cleaned_data):
        return '任务 "%(name)s" 创建成功!' % cleaned_data

在上面的代码中,我们定义了一个名为 CreateTaskView 的视图类,继承自 Django 内置的 CreateView 类。我们重写了 get_success_message() 函数,并在函数中使用 % 符号实现字符串格式化,以便将表单中的任务名称插入到提示信息中。当用户成功提交任务表单时,会显示类似以下的成功信息提示:

任务 “提交的任务名称” 创建成功!

此处需要注意,如果我们没有在视图中重写 get_success_message() 函数,则默认返回一个固定的字符串:

记录已成功保存。

2. 在表单中使用 get_success_message()

在 Django 表单中,我们也可以使用 get_success_message() 函数来展示成功信息提示。例如:

from django import forms

class TaskForm(forms.ModelForm):
    class Meta:
        model = Task
        fields = ['name', 'description']

    def get_success_message(self):
        return '任务 "%(name)s" 创建成功!' % self.cleaned_data

在上面的代码中,我们定义了一个名为 TaskForm 的表单类,继承自 Django 内置的 ModelForm 类。我们重写了 get_success_message() 函数,并在函数中使用 % 符号实现字符串格式化,以便将表单中的任务名称插入到提示信息中。当用户成功提交任务表单时,会显示类似以下的成功信息提示:

任务 “提交的任务名称” 创建成功!

需要注意的是,如果直接在表单中添加 get_success_message() 函数,则需要在视图中调用该函数,例如:

class CreateTaskView(CreateView):
    template_name = 'task_form.html'
    form_class = TaskForm
    success_url = reverse_lazy('task_list')

    def form_valid(self, form):
        response = super().form_valid(form)
        self.object = form.save()
        success_message = form.get_success_message()
        messages.success(self.request, success_message)
        return response

在修改视图中的 form_valid() 函数时,我们首先调用父类的 form_valid() 函数,以保证表单能够正常保存。接着,我们保存表单中的数据并调用 get_success_message() 函数来获取成功信息提示。最后,我们使用 Django 内置的消息框架(messages)将提示信息展示在页面中。

以上就是 Django get_success_message() 函数的使用方法,通过覆盖该函数,我们可以轻松生成自定义的成功信息提示,提高用户体验。