📜  Django 表单中的自定义字段验证

📅  最后修改于: 2022-05-13 01:55:40.742000             🧑  作者: Mango

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])

我们编写了一个手机号码验证器的逻辑,它会引发错误并包装在函数