微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 将错误链接到WTForms FieldLists中的右侧字段

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

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

class @R_685_4045@ionForm(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.']}

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

编辑:我最终这样做的方式是我在我的@R_685_4045@ionForm类中添加一个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而不是为每个专业领域设置执行此操作,如果这是您需要始终如一地执行的操作.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐