如何在 Django 项目中添加验证?
验证是计算机自动检查以确保输入数据合理且有意义的过程。它不判断输入数据是否准确。我们许多人都熟悉电子邮件或电话验证,这通常是大多数网站的一部分。当我们以错误的格式输入电子邮件地址或输入的电话号码不包含 10 位数字时,通常会显示警告提示,要求以可接受的格式输入数据。这就是验证。大多数开发者会在他们的项目中添加验证,以确保他们以期望的格式接收来自用户的数据。
Django 中的验证
Django 项目中的验证可以在表单和字段上进行。表单验证发生在数据清理时。如果您想自定义此过程,则需要更改多个区域。通常,这些地方中的每一个都具有不同的用途。
验证在数据清理时进行。在表单处理过程中,Django 中的清理有三种方式。通常,这些会在对表单上的 is_valid() 方法调用后执行。其他一些操作也可以触发清理和验证,例如调用 full_clean() 方法。
验证由验证器执行;这些是可以重复使用的辅助工具。验证器是接受单个参数并在无效输入时引发 ValidationError 的函数。在调用字段的 to_python 和 validate 方法后,将运行验证器。
在 Django 中验证表单的过程分为几个步骤。这些步骤如下所示。
字段上的 **to_python** 方法是每个验证的第一步。它确保输入的数据属于正确的类型,否则会引发 **ValidationError**。此方法接受用户输入的数据,将其转换为 Python 等效的数据类型,或者如果无法转换则引发错误。
**例如:**如果在此字段中输入的数据无法转换为 Python 浮点数,则 **FloatField** 将引发 **ValidationError**。
**validate()** 方法处理字段上不适合验证器的特定验证。它只处理特定于字段的错误。它接受用户提供的值,将其转换为正确的数据类型,并在出现任何异常行为时引发 ValidationError。
**run_validators()** 方法运行应用于特定字段的所有验证器,并将所有生成的错误合并到单个 ValidationError 中。
如前所述,验证器在数据清理时运行。因此,clean() 方法确保在需要时以正确的顺序运行 **to_python()、validate()** 和 **run_validators()**,并在需要时引发错误。
例如,要验证名为 idnumber 的 CharField 的内容(该字段唯一标识一行),clean_idnumber() 将是指定清理过程的方法。此方法的返回值将替换清理数据的现有值。