Ответ 1
Отказ
В общем, я немного настороженно отношусь к библиотекам форм HTML. Если вы используете что-то из мега-фреймворка, вы обязательно должны принести всю мега-структуру в качестве вашей зависимости.
Многие подкомпоненты многих мегаструктур утверждают, что они не зависят от структуры, но не позволяют себе самим. Если вы его не используете, есть, по крайней мере, дюжина библиотек форм, которые я знаю, с широким спектром различий в возможностях. Только один выбор может стать довольно запутанным. Вообще говоря, поскольку Ian Bicking говорит много лет назад и по-прежнему верен, я думаю, что представление об одной библиотеке форм, которая подходит всем, довольно смехотворна. На самом деле я бы сказал, что вам, вероятно, нужно подумать дважды, прежде чем решиться, что вам действительно нужен. Скорее всего, это время, когда вам нужна библиотека для проверки формы, например FormEncode. Это действительно зависит от того, как вы хотите его использовать.
Для меня, поскольку я не использую мега-фреймворк, я бы выбрал что-то легкое, легко подобрать и настроить, и что-то, что не мешает нормальному использованию HTML/JS/CSS.
END Отказ
Я пробовал ToscaWidgets, ToscaWidgets 2, Formish, Deform, WTForms и FormEncode. Я должен сказать, что ни один из них нигде не близок к совершенству. Вот мой опыт с ними:
- ToscaWidgets, ToscaWidgets 2 - Исключительно мощный, но также чрезвычайно сложный. ToscaWidgets 2 намного лучше, но он все еще довольно альфа-банкомат. Для настройки требуется немало навыков ниндзя, и ваш код, как правило, быстро раздувается, когда вам нужно настроить шаблоны по умолчанию.
- Formish/Deform - почти такой же мощный, как TW, но Formish сейчас неактивен. Это также довольно тесно связано с Мако, поэтому, если вы не используете Мако, это, вероятно, не для вас. Деформа - это переиздание Формиста, но в нем содержится множество зависимостей Zope. Хамелеон также не совсем там с точки зрения поддержки других языков программирования, кроме ZPT. Эти 2 библиотеки также не очень удобны в настройке.
- WTForm - очень просто, не мешает вам и очень активен с точки зрения разработки. Он нигде не так силен, как вышеупомянутые библиотеки, но, как правило, он заботится о 80% случаях использования, с которыми вы можете столкнуться, так что это достаточно хорошо.
- FormEncode - Tried-and-true с 2005 года. Его хорошо протестированный, поставляется с наибольшим количеством готовых валидаторов, поддерживает условную проверку и полезные сообщения об ошибках на десятках языков. Он также имеет очень простую, но сфокусированную способность генерировать код формы в HTML, предварительно заполненный значениями и сообщениями об ошибках. Его недостатки включают в себя иногда неинтуитивный API и его абсолютно spagetti-подобный внутренний код. Однако эта библиотека достаточно надежна и очень хорошо подходит во всех случаях использования проверки достоверности, и она всегда возвращается.
По состоянию на конец 2012 года быстрый поиск Google и PyPI для библиотеки проверки Python возвращается сотнями пакетов. Есть несколько более десятка заметных, дисконтирующих расширения Django, которые находятся в активной разработке. Кажется, что существует тенденция к определению схемы с использованием JSON-Schema и возможности в целом проверять структуры данных Python. Это, скорее всего, является отражением движущихся принимающих пользовательских данных разработчиками серверных приложений из нескольких каналов (API-интерфейсы RESTful и HTML-форм), но по-прежнему хотят использовать только одну библиотеку проверки.
Учитывая, что выпуск Python 3.3, скорее всего, вызовет массовое движение по переносу существующих библиотек для поддержки Python 3.x(оборотная сторона этого процесса ставит старые библиотеки и остается совместимой только с Python 2.x), она может разумно выбрать тот, который уже поддерживает или активно работает для поддержки Python 3.x.
Наконец, еще одна большая проблема, возникающая при выборе библиотеки проверки формы, - это возможность сообщать полезные сообщения об ошибках, которые неизменно включают необходимость локализации сообщений об ошибках в долгосрочной перспективе. Легкость предоставления собственных сообщений об ошибках быстро определит сложность интеграции библиотеки с остальной архитектурой вашего веб-приложения.
Перспективные up-and-goers:
- Voluptuous(Очень популярный, очень простой API)
- Kanone (Вдохновленный FormEncode)
- Schema (Тот же автор docopt, очень простой API)