В реальных приложениях, если я использую фреймворк форм, в какой-то момент я неизбежно столкнусь с ним.
Меня интересуют шаблоны наилучшей практики для создания форм на веб-сайте.Ссылка на реализации на любом языке будет бонусом (я обычно работаю на Python).Меня особенно интересует проблема создания / отображения форм для конечного пользователя.
Вот как я вижу предмет.Большинство частей рабочего процесса формы могут быть обработаны с помощью относительно легких компонентов, которые я могу извлечь из каркасов, таких как formencode и formish .Под «большинством частей» я имею в виду декодирование отправленных данных формы в разумную структуру данных (например, повторяющиеся поля в форме должны стать списками в Python); маршаллинг значений в нужные нам типы (например, поле "age" должно стать целым числом);и проверка значений (например, "возраст не должен быть пустым").
Бит, который я заканчиваю борьбой, заключается в создании и отображении самих форм.Многие фреймворки (например, FormAlchemy ) тесно связывают свои схемы, валидацию и модели с какой-то схемой генерации виджетов форм, что мне не нравится.
Задачи, связанные с созданием формы::
- Создание динамических виджетов (например, список выбора со значениями из базы данных)
- Цикл по повторяющимся наборам полей (например, список имен, возрастных пар, каждый из которых представляет человека)
- Встраивание существующих значений в поля формы (из структуры данных)
- Отображение ошибок проверки рядом с полями формы или в верхней части страницы
Параметры Iдля этого необходимо выполнить следующие действия:
- генерировать на основе виджетов, определенных в схеме (например, Django )
- пост-процесс формы, применяя структуру данных, содержащую ошибки и значения, к шаблону HTML (например, htmlfill )
- допускают, что для всех случаев, кроме самых простых, вы можетехорошо начать с самого началаoding логика (циклы, отображение ошибок и т. д.) вручную в каждом из ваших шаблонов форм
Существуют ли другие шаблоны для решения проблемы?Каковы плюсы и минусы каждого?
Фреймворки (Python), на которые я смотрел / которые уже указывали: flatland , formencode , FormAlchemy , formish , WTForms , Django форм, web2py , деформации , FormConvert и web.py
Обновление: Мне не так уж и далеко до ответа на вопрос о наилучшей практике создания форм, но я сделалрешение с моим текущим проектом пойти на деформацию / дуршлаг, который является разумным способом обработки сериализации и т. д., но что более важно, хорошо документировано и хорошо протестировано.Я собираюсь избегать генерации форм для всех, кроме самых простых форм.