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())

チェックされた項目のリストを取り戻すことを期待していましたが(妥当なように聞こえますか?)、代わりに、すべてのチェックボックスがオンになっているにもかかわらず、単一の項目のリストを取得しました。私はこれを間違ってやっていますか、それとも私が取り戻したいことは可能ですか?チェックされた項目を配列に追加するチェックボックス項目ごとにonclicksを使用してハックを作成し、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

レッドロケット、

variabledecode の docstring を見たことがありますか? 次のようなものを使用することをお勧めします。

<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 に答える