Пилоны /Formencode с несколькими флажками
Сегодня я столкнулся с несколькими проблемами с 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 - это уродливо и мучительно, так как мне приходится заполнять все поля самостоятельно, если проверка не удалась.
У кого-нибудь есть идеи?
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'])
redrockettt,
Вы смотрели на строку документации с переменным кодом? Он предлагает вам использовать что-то вроде:
<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 или вставьте сюда.