gpt4 book ai didi

WTForms:基于数据库数据的自定义验证器?

转载 作者:行者123 更新时间:2023-12-04 02:24:26 28 4
gpt4 key购买 nike

在 WTForms 中,我可以根据数据库中的数据创建自定义验证器吗?

例如,我想显示一个多选字段,用户只能根据他们的帐户类型(存储在数据库中)选择一定数量的值。

预期的行为是这样的:

  1. 如果提交了表单,请检查选择了多少个值。
  2. 运行数据库查询,获取帐户类型。
  3. 检查#1 是否小于或等于#2。
  4. 如果是,则认为它有效。

这可能吗?

最佳答案

您可以编写自定义验证器来执行您在 python 中可以执行的任何操作:

user = # get user from request context

def account_type_check(form, field):
account = get_account_for_user(user) # insert your account retrieval logic here

if len(field.data) > account.user_limit:
raise ValidationError('Submission exceeded user's account type limit')

class SelectionForm(Form):
selection = MultiSelectField('Selection', [account_type_check])

值得注意的是,您可以说是在为此类事情使用目的不当的工具。表单验证库的目的是提供一种DRY 方法来验证表单提交。这对于测试字符串的长度、数字是否在范围内等非常有效。一旦验证场景变得足够复杂,您将花费更多的时间来尝试使库满足您的需求,而不是自己编写验证。

关于WTForms:基于数据库数据的自定义验证器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24274855/

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