在 WTForms 中验证美国 phone 号码
Validating US phone number in WTForms
我正在使用烧瓶应用程序并使用 wtforms:
class RegisterForm(Form):
username = StringField('Username', validators=[DataRequired(), Length(min=3, max=25)])
email = StringField('Email', validators=[DataRequired(), Email(), Length(min=6, max=40)])
phone = StringField('Phone', validators=[DataRequired(), Length(10)])
我刚刚添加了 phone,正在寻找一种方法来验证美国号码。我遇到了 http://wtforms-components.readthedocs.org/en/stable/#phonenumberfield,但这似乎不再有 phonenumberfield。使用 wtfforms 处理此问题的最佳方法是什么?
已编辑 class:
class RegisterForm(Form):
username = StringField('Username', validators=[DataRequired(), Length(min=3, max=25)])
email = StringField('Email', validators=[DataRequired(), Email(), Length(min=6, max=40)])
phone = StringField('Phone', validators=[DataRequired(),validate_phone('RegisterForm','phone'), Length(min=6, max=40)])
def validate_phone(form, field):
if len(field.data) > 16:
raise ValidationError('Invalid phone number.')
try:
input_number = phonenumbers.parse(field.data)
if not (phonenumbers.is_valid_number(input_number)):
raise ValidationError('Invalid phone number.')
except:
input_number = phonenumbers.parse("+1"+field.data)
if not (phonenumbers.is_valid_number(input_number)):
raise ValidationError('Invalid phone number.')
我在最近的申请中使用了python-phonenumbers。它使用 google phone 数字解析的东西。以下是我的使用方法:
from wtforms import ValidationError
import phonenumbers
class RegisterForm(Form):
username = StringField('Username', validators=[DataRequired(), Length(min=3, max=25)])
email = StringField('Email', validators=[DataRequired(), Email(), Length(min=6, max=40)])
phone = StringField('Phone', validators=[DataRequired()])
def validate_phone(form, field):
if len(field.data) > 16:
raise ValidationError('Invalid phone number.')
try:
input_number = phonenumbers.parse(field.data)
if not (phonenumbers.is_valid_number(input_number)):
raise ValidationError('Invalid phone number.')
except:
input_number = phonenumbers.parse("+1"+field.data)
if not (phonenumbers.is_valid_number(input_number)):
raise ValidationError('Invalid phone number.')
我在 wtforms
组件中使用了内置的 PhoneNumberField
。这是我的使用方法。
from wtforms_components import PhoneNumberField
class UserForm(Form):
phone_number = PhoneNumberField(
country_code='US'
display_format='national'
)
我正在使用烧瓶应用程序并使用 wtforms:
class RegisterForm(Form):
username = StringField('Username', validators=[DataRequired(), Length(min=3, max=25)])
email = StringField('Email', validators=[DataRequired(), Email(), Length(min=6, max=40)])
phone = StringField('Phone', validators=[DataRequired(), Length(10)])
我刚刚添加了 phone,正在寻找一种方法来验证美国号码。我遇到了 http://wtforms-components.readthedocs.org/en/stable/#phonenumberfield,但这似乎不再有 phonenumberfield。使用 wtfforms 处理此问题的最佳方法是什么?
已编辑 class:
class RegisterForm(Form):
username = StringField('Username', validators=[DataRequired(), Length(min=3, max=25)])
email = StringField('Email', validators=[DataRequired(), Email(), Length(min=6, max=40)])
phone = StringField('Phone', validators=[DataRequired(),validate_phone('RegisterForm','phone'), Length(min=6, max=40)])
def validate_phone(form, field):
if len(field.data) > 16:
raise ValidationError('Invalid phone number.')
try:
input_number = phonenumbers.parse(field.data)
if not (phonenumbers.is_valid_number(input_number)):
raise ValidationError('Invalid phone number.')
except:
input_number = phonenumbers.parse("+1"+field.data)
if not (phonenumbers.is_valid_number(input_number)):
raise ValidationError('Invalid phone number.')
我在最近的申请中使用了python-phonenumbers。它使用 google phone 数字解析的东西。以下是我的使用方法:
from wtforms import ValidationError
import phonenumbers
class RegisterForm(Form):
username = StringField('Username', validators=[DataRequired(), Length(min=3, max=25)])
email = StringField('Email', validators=[DataRequired(), Email(), Length(min=6, max=40)])
phone = StringField('Phone', validators=[DataRequired()])
def validate_phone(form, field):
if len(field.data) > 16:
raise ValidationError('Invalid phone number.')
try:
input_number = phonenumbers.parse(field.data)
if not (phonenumbers.is_valid_number(input_number)):
raise ValidationError('Invalid phone number.')
except:
input_number = phonenumbers.parse("+1"+field.data)
if not (phonenumbers.is_valid_number(input_number)):
raise ValidationError('Invalid phone number.')
我在 wtforms
组件中使用了内置的 PhoneNumberField
。这是我的使用方法。
from wtforms_components import PhoneNumberField
class UserForm(Form):
phone_number = PhoneNumberField(
country_code='US'
display_format='national'
)