0

今天在验证多个复选框时,我遇到了 Pylons/Formencode 的一些问题。作为背景知识,我的 Mako 模板中有这样的内容:

<input type="checkbox" name="Project" value="1">Project 1</input>
<input type="checkbox" name="Project" value="2">Project 2</input>
<input type="checkbox" name="Project" value="3">Project 3</input>
<input type="checkbox" name="Project" value="4">Project 4</input>
<input type="checkbox" name="Project" value="5">Project 5</input>

在我的验证模式中,我有这样的东西(请原谅任何错误 - 我面前没有确切的代码):

Project = formencode.foreach.ForEach(formencode.validators.Int())

我原本希望得到一个已检查项目的列表(听起来很合理,对吗?),但我得到了一个包含单个项目的列表,尽管所有框都已选中。我这样做是错的还是我想要找回的东西甚至可能?我已经为每个复选框项目编写了一个关于它的 hack,将选中的项目附加到一个数组,然后以 JSON 格式发回 - 这很丑陋而且很痛苦,因为如果验证失败,我必须自己重新填充所有字段。

有人有想法么?

4

2 回答 2

2

也许使用formencode.validators.Set

>>> Set.to_python(None)
[]
>>> Set.to_python('this')
['this']
>>> Set.to_python(('this', 'that'))
['this', 'that']
>>> s = Set(use_set=True)
>>> s.to_python(None)
set([])
>>> s.to_python('this')
set(['this'])
>>> s.to_python(('this',))
set(['this'])
于 2009-10-14T14:41:28.297 回答
-1

雷德罗克特,

您是否查看过要进行可变解码的文档字符串?它建议你使用类似的东西:

<input type="checkbox" name="Project-1" value="1">Project 1</input>
<input type="checkbox" name="Project-2" value="2">Project 2</input>
<input type="checkbox" name="Project-3" value="3">Project 3</input>

查看 variabledecode.py 中的文本,或粘贴到此处

于 2009-10-15T07:38:07.937 回答