【问题标题】:StringField validation in FlaskFlask 中的 StringField 验证
【发布时间】:2018-12-07 12:47:14
【问题描述】:

我正在努力验证以下代码中的 StringField。 电子邮件验证和日期验证功能正确。但是,当我为姓/名输入超出 len 范围的字符串时,不会抛出任何错误。 所有的导入都是正确的。

enter image description here你能帮我吗?

类电子邮件表单(FlaskForm):

email = EmailField('Email', [validators.Email()])
postcode = StringField('Postcode')
surname = StringField('Surname', [validators.Length(3,45)])
firstname = StringField('First Name', [validators.Email(3,45)])
dateofbirth = DateField("Date Of Birth", default=date.today(), format='%d/%m/%Y')    
submit = SubmitField('GO')

【问题讨论】:

  • 在 Regex 上验证 StringField 也不起作用。 surname = StringField('Surname', [validators.required(), validators.regexp('^.{0,3}$')])
  • 另外,如果我在电子邮件中添加长度验证,它也不起作用:email = EmailField('Email', [validators.Email(), validators.Length(min=6, max= 120)])

标签: python string validation flask-wtforms


【解决方案1】:

根据wtforms 文档,您需要在validators.Length 上指定'min' 和'max' 值。

在您的情况下,它应该如下所示:

surname = StringField('Surname', [validators.Length(min=3, max=45)])
firstname = StringField('First Name', [validators.Length(min=3, max=45)])

您可以尝试一下,如果您仍然遇到问题,请告诉我?

编辑:我刚刚意识到您的firstnamevalidators.Email 而不是validators.Length,所以我在上面编辑了我的代码。

【讨论】:

  • 是的!我也尝试过该选项,但验证不起作用。
  • @Maria 你用的是什么版本的 Flask-WTF? (来自 python:import flask_wtf; print(flask_wtf.__version__) 或来自 pip:pip freeze | grep Flask-WTF)因为我已经尝试过 username = StringField('Username', validators=[Length(min=5, max=10)])username = StringField('Username', [validators.Length(min=3, max=45)]) 并且两者都在我的代码中触发了验证。澄清一下,当您提交验证超出范围的表单时,您是否收到错误消息?
  • 其实你的第一个选项 "username = StringField('Username', validators=[Length(min=5, max=10)])" 对我不起作用运行项目时出错在 cmd 中:未定义名称“长度”
  • @Maria 你需要从 wtforms.validators 导入长度 - from wtforms.validators import Length
猜你喜欢
  • 1970-01-01
  • 2018-12-31
  • 2016-08-24
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
  • 2017-10-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多