gpt4 book ai didi

python - Flask 表单验证设计

转载 作者:行者123 更新时间:2023-12-03 15:47:34 31 4
gpt4 key购买 nike

我对编程并不陌生,但我是 Python 和 Flask 的新手。我有一个关于表单验证的设计问题。

我有一个注册表单,其中包含用户信息以及他们所属的公司。然后表单会验证电子邮件是否已在使用中,但我还想验证该公司之前是否已注册。我不希望同一家公司注册多次。

尝试仅匹配公司名称可能会导致问题,因为用户不一定拼写相同的内容(即:添加或省略标点符号)。我的想法是验证公司名称、街道地址号码和邮政编码中的前 X 个字符。如果匹配,则不允许用户注册,他们将不得不呼入(或其他一些待确定的过程)。

好的,真正的问题......将验证添加到 WTF 表单是否更好?或者在模型中添加一个辅助函数?我正在验证三个字段,但不知道哪个是最佳实践。

编辑 - 我真的在问我是否必须在多个字段上进行验证,我是将它添加到表单中还是在模型中使用辅助函数?

谢谢你的协助。

吉米

最佳答案

在这种情况下,使用 WTForms 进行验证可能会更好。向用户发送错误消息会更容易。

在 WTForms 中,很容易添加 custom validator :

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')

但是,在您的情况下,这将不起作用,因为您想要执行多个字段。 WTForms 来救援!您可以通过 field enclosure 验证您公司的所有字段。 .这将允许您将“公司信息”视为一个字段并验证每个字段。
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])

您还可以向数据库模型添加唯一性要求。不确定您的数据库是什么,但 MongoDB 提供了 unique_with要求。但这不会进行任何验证,如果您尝试创建非唯一的 db 条目,它只会引发错误。

关于python - Flask 表单验证设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22283844/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com