python validation formencode wtforms toscawidgets

Recomendación para la biblioteca de validación de formularios de python



validation formencode (5)

Me gustaría una biblioteca de validación de formularios que

1. separar la generación html de la validación del formulario;

2. los errores de validación se pueden serializar fácilmente, por ej. objeto de dumping como un objeto json

¿Qué biblioteca de validación de formularios elegirías en un proyecto web de python?


Depende de qué marco subyacente uses.

para django, construido en el marco de la forma es el mejor,

mientras que kay usa la versión extendida del sistema de formularios de zine

y tipfy usa WTForms.

El sistema integrado de django es el mejor hasta ahora.

¿Qué marco usas debajo del capó?


Depende del tiempo y, luego, del tipo de marco que utilice.

Para su tarea, le recomendaría usar el web2py-Framework , que es fácil de usar y aún "poderoso". Tiene validación de formulario por defecto (el web2py-book es gratis), que hace exactamente lo que usted quiere: separa la generación de html de la validación y lo hace automáticamente, pero puede, si lo desea, personalizarlo.

Un ejemplo:

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)

También es posible serializar errores, pero para esas preguntas es mejor preguntar en el web2py-group . Son muy amables y te ayudarán muy rápido.

¡Espero eso ayude! Atentamente..


Este tema es un poco viejo, pero pensé que podría descaradamente enchufar una biblioteca que he estado escribiendo para este propósito. No es exclusivo de formularios HTML, sino que se escribió con ellos, al menos parcialmente, en mente.

No me sentía muy creativo cuando lo llamé, por lo que "Validator" tendrá que hacer por ahora. Aquí tienes: https://github.com/wilhelm-murdoch/Validator


Probablemente elegiría WTForms .


Renuncia

En general, soy un poco cauteloso con las bibliotecas de formularios HTML ahora. Si usa algo de un mega-framework, invariablemente tiene que incluir todo el mega-framework como su dependencia.

Muchos subcomponentes de muchos megamarcos afirman no depender del marco, pero no nos engañemos. Si no usa uno, hay al menos una docena de bibliotecas de formularios que conozco por ahí con una amplia gama de diferencias en las capacidades. Solo las elecciones pueden ser bastante confusas. En términos generales, como says Ian Bicking hace muchos años y sigue siendo cierto, creo que la noción de una biblioteca de formas que se adapte a todos es bastante ridícula. De hecho, argumentaría que probablemente debas pensarlo dos veces antes de decidir que realmente lo necesitas. Lo más probable es que solo necesite una biblioteca de validación de formularios como FormEncode . Realmente depende de cómo quieras usarlo.

Para mí, dado que no uso un mega-framework, elegiría algo ligero, fácil de seleccionar y configurar, y algo que no interfiera en el uso normal de HTML / JS / CSS .

END Descargo de responsabilidad

He probado ToscaWidgets , ToscaWidgets 2 , Formish , Deform , WTForms y FormEncode. Debo decir que ninguno de ellos es perfecto. Aquí está mi experiencia con ellos:

  • ToscaWidgets, ToscaWidgets 2: extremadamente potente, pero también extremadamente complicado. ToscaWidgets 2 es mucho mejor, pero sigue siendo bastante cajero automático alfa. Se requieren bastante ninja para configurar y tu código tiende a hincharse bastante rápido cada vez que necesitas personalizar las plantillas predeterminadas.
  • Formish / Deform - Casi tan poderoso como TW pero Formish está inactivo ahora. También está bastante ligado a Mako, así que si no usas Mako, probablemente no sea para ti. Deform es una reescritura de Formish pero trae toneladas de dependencias Zope. Chameleon tampoco está todavía allí en términos de soportar otros lenguajes de plantillas distintos de ZPT. Estas 2 bibliotecas tampoco son particularmente fáciles de configurar.
  • WTForm: muy simple, no se interpone en tu camino y es muy activo en términos de desarrollo. No es tan poderoso como las bibliotecas anteriores, pero generalmente se ocupa del 80% de los casos de uso que pueda encontrar, por lo que es lo suficientemente bueno.
  • FormEncode - Tried-and-true desde 2005. Está bien probado, viene con la mayor cantidad de validadores preconstruidos, admite validación condicional y mensajes de error útiles en docenas de idiomas. También tiene una capacidad muy simple pero enfocada para generar código de formulario en HTML prellenado con valores y mensajes de error. Sus desventajas incluyen una API ocasionalmente no intuitiva y su código interno absolutamente similar a un spagetti. Sin embargo, esta biblioteca es bastante confiable y se adapta muy bien en todos los casos de uso de validación de datos y es a la que siempre vuelvo.

A finales de 2012, una búsqueda rápida de Google y PyPI para una biblioteca de validación de Python vuelve con cientos de paquetes. Hay un poco más de una docena de notables, descontando esas extensiones de Django, que están en desarrollo activo. Parece haber una tendencia hacia la definición de un esquema utilizando JSON-Schema y la capacidad de validar genéricamente las estructuras de datos de Python. Es probable que esto sea un reflejo de que los desarrolladores de aplicaciones de servidor se están moviendo aceptando datos de usuario de múltiples canales (API RESTful y formularios HTML), pero siguen queriendo usar solo una biblioteca de validación.

Dado el lanzamiento de Python 3.3 probablemente desencadenará un movimiento masivo hacia portar bibliotecas existentes para soportar Python 3.x (la otra cara de esto es ver estancadas las viejas bibliotecas y seguir siendo compatibles solo con Python 2.x), puede ser conveniente elija uno que ya sea compatible o que esté trabajando activamente para admitir Python 3.x.

Por último, otra gran área de preocupación al elegir una biblioteca de validación de formularios es la capacidad de informar mensajes de error útiles, lo que invariablemente incluye la necesidad de localizar los mensajes de error a largo plazo. La facilidad de suministrar sus propios mensajes de error determinará rápidamente la complejidad de integrar la biblioteca con el resto de la arquitectura de su aplicación web.

Prometedores prometedores: