📅  最后修改于: 2023-12-03 15:20:56.480000             🧑  作者: Mango
在 Django 中,当表单验证失败时,会抛出 ValidationError
异常。这种异常是非常常见的,所以需要了解它的用法和参数。
ValidationError
可以在任何 Django 视图中使用,包括表单视图、通用视图、验证器等等。它接受一个参数,这个参数是一个包含错误信息的字典,其中键是表单字段的名称,值是对应字段的错误信息。
下面是一个常见的用法示例:
from django import forms
from django.core.exceptions import ValidationError
class ContactForm(forms.Form):
name = forms.CharField(required=True)
email = forms.EmailField(required=True)
message = forms.CharField(widget=forms.Textarea, required=True)
def clean(self):
cleaned_data = super(ContactForm, self).clean()
name = cleaned_data.get("name")
email = cleaned_data.get("email")
message = cleaned_data.get("message")
if not name and not email and not message:
raise ValidationError(
"You must enter either your name or your email address."
)
return cleaned_data
在这个示例中,我们定义了一个表单类 ContactForm
,它有三个字段:name
、email
和 message
。在 clean
方法中,我们检查这三个字段是否都为空,如果是,就会抛出一个 ValidationError
异常。
还有一些其他的参数可以传递给 ValidationError
,它们允许您自定义错误消息的显示方式。
错误代码,用于识别错误。通常用于本地化错误消息。例如:
raise ValidationError(
"This value is not valid.",
code="invalid",
)
错误消息中替换变量的值。例如:
raise ValidationError(
"The %(value)s is not valid.",
code="invalid",
params={"value": "input"},
)
指定自定义错误消息。例如:
raise ValidationError(
"You must enter either your name or your email address.",
code="invalid",
params={"value": "input"},
message="Please enter your name or email.",
)
ValidationError
是 Django 中非常重要的异常,它允许您在表单验证期间抛出错误。本文介绍了该异常的用法和参数,可以帮助您编写更好的表单视图和通用视图。