Jim*_*iel 5 python forms validation flask
我不是编程新手,但我是Python和Flask的新手.我有关于表单验证的设计问题.
我有一个注册表单,用于捕获用户信息以及他们所属的公司.然后,该表单将验证电子邮件是否已被使用,但我还想验证该公司之前是否已注册.我不希望同一家公司不止一次注册.
试图仅仅匹配公司名称可能会导致问题,因为用户不一定拼写相同的东西(即:添加或省略标点符号).我的想法是验证公司名称中的前X个字符,街道地址编号和邮政编码.如果匹配,则不允许用户注册,他们将不得不打电话(或其他一些过程待确定).
好的,真正的问题......将验证添加到WTF表单是否更好?或者在模型中添加辅助函数?我正在验证三个领域并且不知道哪个是最佳实践.
编辑 - 我真的在问我是否必须在多个字段上进行验证,是将它添加到表单中还是在模型中使用辅助函数?
谢谢你的协助.
吉米
在这种情况下,使用 WTForms 进行验证可能会更好。向用户发送错误消息会更容易。
在 WTForms 中,添加自定义验证器很容易:
class MyForm(Form):
company = TextField('Company', [Required()])
def validate_company(form, field):
if len(field.data) > 50:
raise ValidationError('Name must be less than 50 characters')
Run Code Online (Sandbox Code Playgroud)
然而,就您而言,这不起作用,因为您想要执行多个字段。WTForms 来救援!您可以通过现场围栏验证公司的所有字段。这将允许您将“公司信息”视为一个字段并对每个字段进行验证。
class CompanyForm(Form):
name = StringField('Company name', [validators.required()])
address = StringField('Address', [validators.required()])
class RegistrationForm(Form):
first_name = StringField()
last_name = StringField()
company = FormField(CompanyForm, [your_custom_validation])
Run Code Online (Sandbox Code Playgroud)
您还可以向数据库模型添加唯一性要求。不确定你的数据库是什么,但 MongoDB 提供了一个unique_with要求。但这不会进行任何验证,如果您尝试创建非唯一的数据库条目,它只会抛出错误。
| 归档时间: |
|
| 查看次数: |
2914 次 |
| 最近记录: |