Подтвердить что ты не робот

Рекомендация для библиотеки проверки формы python

Мне нужна библиотека проверки формы, которая

1.seateate html генерация из проверки формы;

2. Ошибки, связанные с оценкой, могут быть легко сериализованы, например. сбрасывается как объект json

Какую библиотеку проверки форм вы выбрали бы в веб-проекте python?

4b9b3361

Ответ 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)

Ответ 2

Я бы выбрал WTForms.

Ответ 3

Этот вопрос немного на старой стороне, но я думал, что я бесстыдно подключу библиотеку, которую я пишу для этой цели. Это не исключительно для HTML-форм, но было написано с ними, по крайней мере частично, в виду.

Я не чувствовал себя очень креативным, когда я его назвал, поэтому "Валидатор" должен будет сделать это сейчас. Вот вы: https://github.com/wilhelm-murdoch/Validator

Ответ 4

Это зависит от того, какой тип фреймворка вы используете.

Для вашей задачи я бы рекомендовал использовать web2py-Framework, который прост в использовании и все еще "могучий". У него форма-валидация по умолчанию (web2py-book является бесплатным), который делает именно то, что вы хотите: он отделяет генерацию html от проверки и делает это автоматически, но вы можете, если хотите, настроить его.

Пример:

def display_form():
    form=FORM('Your name:',
              INPUT(_name='name', requires=IS_NOT_EMPTY()),
              INPUT(_type='submit'))
    if form.accepts(request.vars, session):
        response.flash = 'form accepted'
    elif form.errors:
        response.flash = 'form has errors'
    else:
        response.flash = 'please fill the form'
    return dict(form=form)

Также возможно сериализовать ошибки, но для этих вопросов лучше спросить их на web2py-group. Они очень приятные и помогут вам очень быстро.

Надеюсь, это поможет! С наилучшими пожеланиями..

Ответ 5

это зависит от того, какую базовую структуру вы используете.

для django, встроенная структура формы лучше всего,

в то время как kay использует расширенную версию системы zine form

и tipfy использует WTForms.

Встроенная система django пока лучшая.

какие рамки вы используете под капотом?