gpt4 book ai didi

python - 将错误链接到 WTForms FieldLists 中的正确字段

转载 作者:太空宇宙 更新时间:2023-11-03 11:33:41 26 4
gpt4 key购买 nike

我正在使用 WTForm 来验证我直接从 javascript 模型提交的表单(通过挖空填充)。在我的表单中,我有一个可以动态添加/删除的银行帐户列表。在 python 方面,我有这样的东西:

class Account(Form):
acc_name = TextField('Account', [validators.Length(min=2, max=35)])

class InformationForm(Form):
account_list = FieldList(FormField(Account))

接收到的用于验证的 json 数据如下:

'account_list': [{'acc_name': 'aaaaa'}, {'acc_name': 'b'}]}

问题是,当我验证时,我收到类似这样的信息,无法知道列表中的哪个帐户是错误的来源:

'account_list': [{'acc_name': [u'Field must be between 2 and 35 characters long.']}

如何将错误链接到正确的帐户?

编辑:我最后的做法是在我的 InformationForm 类中添加了一个 getErrors 方法,它为每个帐户构建了一个由唯一 ID 索引的字典,其中值是每个帐户错误。然后我将其作为 json 返回到我的应用程序。如果有一个“自然”的解决方案,我会保留这个问题......

最佳答案

FieldList 中的每个单独元素本身就是一个字段。如果 FieldList 包含一个 TextField,则每个条目都是一个 TextField。如果它包含一个 FormField,那么它就是一个 FormField(然后它包含一个带有自己字段的表单)可以通过迭代 FieldList 或访问 FieldList 的 .entries 属性来访问 FieldList 条目。

因此,与其查看 form.account_list.errors,不如查看封闭字段的错误。

所以为了您的使用,像这样:

{% for subfield in form.account_list %}
<!-- subfield in this case is an instance of FormField -->
{{ subfield.form.acc_name() %}
{% if subfield.errors %}
{% for error in subfield.form.acc_name.errors %}
<p class="error">{{ error }}</p>
{% endfor %}
{% endif %}
{% endfor %}

您可能想要 abstract this out to a macro如果这是您需要始终如一且经常执行的操作,而不是针对每个专业领域设置都执行此操作。

关于python - 将错误链接到 WTForms FieldLists 中的正确字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11566715/

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