Django 表单中的自定义字段验证
本文围绕如何向特定字段添加自定义验证展开。例如,通过指定特定格式将电子邮件验证添加到 CharField。关于如何实现自定义验证可以有多种方法。在本文中,我们将从表单本身显示它,以便您无需在其他地方对其进行操作。
什么是验证器?
验证器是一个可调用的,它接受一个值并在它不符合标准时引发 ValidationError 。验证器可用于在不同类型的字段之间重用验证逻辑。
Django 表单的 Django 自定义字段验证说明
使用示例的验证器图示。考虑一个名为 geeksforgeeks 的项目,它有一个名为 geeks 的应用程序。
参考以下文章了解如何在 Django 中创建项目和应用程序。
- 如何在 Django 中使用 MVT 创建一个基本项目?
- 如何在 Django 中创建应用程序?
要在表单字段中使用内置验证器,请像这样在forms.py 中导入验证器。
Python3
from django import forms
from django.core import validators
class StuForm(forms.Form):
name = forms.CharField(
validators =[validators.MaxLengthValidator(10)])
Python3
from django import forms
def start_with_s(value):
if value[0]!='s':
raise forms.ValidationError("Name should start with s")
class StuForm(forms.Form):
name = forms.CharField(
validators =[start_with_s])
Python3
from django import forms
def mobile_no(value):
mobile = str(value)
if len(mobile) != 10:
raise forms.ValidationError("Mobile Number Should 10 digit")
class StuForm(forms.Form):
mob = forms.IntegerField(
validators =[mobile_no])
从验证器调用内置 MaxLengthValidators,如果值的长度大于 limit_value,则会引发验证错误。
如何在 django 中创建我们的自定义验证器?
所以我们将创建我们自己的自定义验证器。
示例 1 :-
我们将创建一个验证器,如果名称不是以 s 开头,则会引发错误。
表格.py
蟒蛇3
from django import forms
def start_with_s(value):
if value[0]!='s':
raise forms.ValidationError("Name should start with s")
class StuForm(forms.Form):
name = forms.CharField(
validators =[start_with_s])
在验证器中传递函数。
我们编写一个逻辑,如果名称不以 's' 开头,则会引发错误并包装在函数。
示例 2 :-
我们将为手机号码字段创建一个验证器
蟒蛇3
from django import forms
def mobile_no(value):
mobile = str(value)
if len(mobile) != 10:
raise forms.ValidationError("Mobile Number Should 10 digit")
class StuForm(forms.Form):
mob = forms.IntegerField(
validators =[mobile_no])
我们编写了一个手机号码验证器的逻辑,它会引发错误并包装在函数