否则,我如何设置这个django自定义验证函数来验证美国电话号码,而不是“尝试”和“除阻塞”
def validate(value):
if re.match(r"[+]?[1\s-]*[\(-]?[0-9]{3}[-\)]?[\s-]?[0-9]{3}[\s-]?[0-9]{4}",value):
return True
else:
return False发布于 2022-02-01 04:37:32
为了将函数用作Django字段的验证器,如果给定无效值,则需要引发ValueError。
下面是validators.py中验证器的一个示例,它适合于遵循这一约定,并使用re.compile()来加快正则表达式匹配:
# validators.py
import re
# Create a compiled regular expression to speed things up.
# You can also break your string into two strings, one per
# line, to improve readability:
PHONE_REGEX = re.compile(r"[+]?[1\s-]*[\(-]?[0-9]{3}[-\)]?[\s-]?"
r"[0-9]{3}[\s-]?[0-9]{4}")
def validate_phone_number(value):
"""Validates that a phone number matches the format
123 456 7890, with optional dashes between digit groups
and parentheses around the area code.
"""
if not PHONE_REGEX.match(value):
raise ValueError(f'{value} must be in the format 123 456 7890')您可以在models.py中使用此验证器,如下所示:
# models.py
from django.db import models
from .validators import validate_phone_number
class YourModel(models.Model):
phone_number = models.CharField(max_length=30, validators=[validate_phone_number])还有几个注意事项:
https://stackoverflow.com/questions/70935504
复制相似问题