python表单验证wtf_正在验证wtfforms中的美国电话号码

我没有足够的声誉发表评论,但在许多情况下,公认的解决方案会抛出未捕获的异常。这是由于以下行为(从电话号码文档复制的):The parse function will also fail completely (with a NumberParseException) on inputs that cannot be uniquely parsed, or that can't possibly be phone numbers.

失败的字符串示例有“1”、“2”和“abcde”。在

以下是对wgwz的回答的修改,该回答对此类情况是可靠的:from wtforms import ValidationError

import phonenumbers

def validate_phone(message='Invalid phone number.', region=None):

""" This validates the phone number using the phonenumbers package.

Make sure to select a default region in order to validate numbers

that do not follow the international format.

"""

def _validate_phone(form, field):

try:

input_number = phonenumbers.parse(field.data, region)

if not (phonenumbers.is_valid_number(input_number)):

raise ValidationError(message)

except:

raise ValidationError(message)

return _validate_phone

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=[validate_phone(region='US'])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值