Python FormEncode中的ForEach和NestedVariables用于在金字塔中创建表单项数组

Python FormEncode中的ForEach和NestedVariables用于在金字塔中创建表单项数组,python,pyramid,formencode,Python,Pyramid,Formencode,我正在使用带有FormEncode的金字塔来尝试创建和验证地址列表。我正在使用pyramid_simpleform,并且已经看过了本教程和前面的问题,但是我仍然有一些问题。我目前的结构如下: 模式: from formencode import Schema, validators, ForEach, NestedVariables class AddressSchema(Schema): allow_extra_fields = False addresses = validators.St

我正在使用带有FormEncode的金字塔来尝试创建和验证地址列表。我正在使用pyramid_simpleform,并且已经看过了本教程和前面的问题,但是我仍然有一些问题。我目前的结构如下:

模式:

from formencode import Schema, validators, ForEach, NestedVariables

class AddressSchema(Schema):
allow_extra_fields = False
addresses = validators.String(not_empty=True)

class JobSchema(Schema):
filter_extra_fields = True
allow_extra_fields = True
pre_validators = [NestedVariables()]
job_name = validators.MinLength(5, not_empty=True)
comments = validators.MinLength(5, not_empty=False)
addresses = ForEach(AddressSchema())
模板:

${renderer.errorlist("addresses")}
${renderer.errorlist("job_name")}

<p><label for="job_name">Job name: </label>${renderer.text("job_name", size=30)}</p>
% for a in range(1, initial_number_of_address_fields):
    <p><label for="addresses-${a}">Address: </label>${renderer.textarea("addresses-" + str(a), cols=39, rows=6)}</p>
% endfor
${renderer.submit("submit", "Submit")}
我返回了实际的验证错误,如下所示:

{'addresses': u'Missing value'}
但正确填写的值也会提供一个错误:

输入必须是dict-like(而不是:u'dgfgfd')


如果我将
variable\u decode
更改为
True
(在“变量设置”表单中),我将不再返回任何错误。我想我应该以某种方式使用
variable\u decode
,但我不确定如何使用。如何正确验证这些值?

我在2009年写了一篇类似用法的博客文章,它可能会派上用场:

{'addresses': u'Missing value'}