form_valid_message()
函数是Django框架中提供的一个方法,用于自定义表单提交成功后的消息内容。
使用form_valid_message()
函数的前提是,定义了一个基于FormView
或ModelFormMixin
视图类的表单视图,并在其中实现了表单验证函数form_valid()
。
form_valid_message()
函数的默认行为是生成一条消息,该消息会在重定向到新页面后被呈现。默认情况下,消息的内容是“表单已提交成功”。
我们可以通过覆盖form_valid_message()
函数来自定义消息内容。在自定义函数中,我们可以使用self.object
引用最近提交并成功保存到数据库中的模型实例。
以下是一个简单的例子:
from django.contrib.messages.views import SuccessMessageMixin
from django.urls import reverse_lazy
from django.views.generic.edit import CreateView
from .models import MyModel
class MyView(SuccessMessageMixin, CreateView):
model = MyModel
fields = ['field1', 'field2', 'field3']
success_url = reverse_lazy('my-view')
def form_valid(self, form):
self.object = form.save()
return super().form_valid(form)
def form_valid_message(self):
return f"使用 '{self.object.field1}' 创建成功!"
在这个例子中,我们继承了SuccessMessageMixin
,这个混合类提供了一个默认的form_valid_message()
函数行为,会在表单提交成功后生成消息“
我们在基于SuccessMessageMixin
的基础上自定义了form_valid_message()
函数。这个函数通过self.object
引用了最近提交并成功保存到数据库中的对象,然后生成了一个消息字符串。
另一个例子,请看下面这个视图:
from django.contrib.messages.views import SuccessMessageMixin
from django.urls import reverse_lazy
from django.views.generic.edit import UpdateView
from .models import MyModel
class MyView(SuccessMessageMixin, UpdateView):
model = MyModel
fields = ['field1', 'field2', 'field3']
success_url = reverse_lazy('my-view')
def form_valid(self, form):
self.object = form.save()
return super().form_valid(form)
def form_valid_message(self):
return "更新已保存。"
在这个例子中,我们同样继承了SuccessMessageMixin
,定义了一个基于模型表单的更新视图。
默认情况下,这个更新视图会生成一条消息“form_valid_message()
函数,定义了不同的消息内容“更新已保存”。这样就可以输出我们自定义的成功消息。
总之,可以通过自定义form_valid_message()
函数,来定制表单提交成功后的提示消息,以便于更好地反馈给用户表单提交的状态和结果。