我正在尝试做一些我认为应该直截了当的事情,但我在让它发挥作用时遇到了问题。这是我现在所拥有的,正如预期的那样。在
some_schema = Schema(
multiples = ForEach(UnicodeString(), convert_to_list=True),
single = OneOf(['a', 'b'])
)
我想做的是在多值字段被转换为unicode字符串列表后,对其应用MaxLength验证器。然而,它似乎不喜欢我用复合(例如All,Pipe)或自定义验证器所做的任何尝试。在我看来,这是实现这一目标最直接的方法。在
^{pr2}$根据文档,应该将多值字段转换为unicode字符串列表,然后运行MaxLength验证器,如果它是大于5个元素,则失败。故障部分工作:
>>> some_schema.to_python({'single':'a', 'multiples': range(6)})
>>> Invalid: multiples: Enter a value less than 5 characters long
然而,一个看似应该通过的例子却失败了:
>>> some_schema.to_python({'single':'a', 'multiples': range(3)})
>>> Invalid: multiples: Please provide only one value
formencode文档虽然总体上非常好,但却无法阐明这一主题。查看源代码,这是Schema类中的一个单值预期异常。我尝试将accepts_iterator=True
参数传递给模式,但也失败了。在
如何确保模式中的字段是unicode字符串的列表并且长度小于N?在
回答了我自己的问题-您必须向MaxLength验证器提供accepts_iterator关键字。在
按预期工作。在
相关问题 更多 >
编程相关推荐