详解Django的 form_invalid_message() 函数:返回表单验证失败后的消息

  • Post category:Python

form_invalid_message()函数是Django在FormMixin中提供的一个方法,其作用是设置表单验证失败时的错误提示信息。以下是该函数的详细说明:

函数说明

def form_invalid_message(self, form, **kwargs):
    """Return the message to use when invalid data is posted."""
    return None

参数说明:

  • form: 验证失败的表单对象。
  • kwargs: 其他可选参数。

返回值:

  • 如果返回 None(默认值)或者不定义该函数,则会显示默认的错误提示信息。
  • 如果定义了 form_invalid_message() 函数并返回了字符串,则会显示该字符串为错误提示信息。

使用方法

  1. 定义 form_invalid_message() 函数:
class MyView(FormMixin, View):
    # 省略其他代码
    def form_invalid_message(self, form, **kwargs):
        return '请输入正确的信息'
  1. 在 HTML 模板中使用错误提示信息:
{% if form.errors %}
    {{ form.errors }}
{% elif view.form_invalid_message %}
    <div class="alert alert-danger">
        {{ view.form_invalid_message }}
    </div>
{% endif %}

以上代码会先检查表单是否有错误信息,如果有则直接显示;如果没有则检查 form_invalid_message() 函数是否有返回值,如果有则显示对应提示信息。

实例说明

接下来给出两个示例来说明 form_invalid_message() 的使用方法:

示例一

一个登陆页面,要求用户名和密码均不能为空。如果没有输入,则提示“必须输入用户名和密码”。

from django.views.generic import FormView
from django.contrib.auth.forms import AuthenticationForm

class LoginFormView(FormView):

    form_class = AuthenticationForm
    template_name = 'registration/login.html'

    def form_invalid_message(self, form, **kwargs):
        return '必须输入用户名和密码'

在 HTML 模板中使用错误提示信息:

{% if form.errors %}
    {{ form.errors }}
{% elif view.form_invalid_message %}
    <div class="alert alert-danger">
        {{ view.form_invalid_message }}
    </div>
{% endif %}

示例二

一个反馈页面,要求留言内容不能为空且不得少于10个字符。如果没有输入或者字符长度不足,则提示“必须输入至少10个字符的留言内容”。

from django.views.generic import FormView
from my_site.forms import FeedbackForm

class FeedbackFormView(FormView):

    form_class = FeedbackForm
    template_name = 'feedback.html'

    def form_invalid_message(self, form, **kwargs):
        return '必须输入至少10个字符的留言内容'

在 HTML 模板中使用错误提示信息:

{% if form.errors %}
    {{ form.errors }}
{% elif view.form_invalid_message %}
    <div class="alert alert-danger">
        {{ view.form_invalid_message }}
    </div>
{% endif %}

以上就是常见场景下 form_invalid_message() 函数的应用示例和使用方法。