Negación
En términos generales estoy un poco cautelosos acerca de 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 mega-frameworks afirman que no dependen 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 general, como Ian Bicking says hace muchos años y sigue siendo cierto, creo que la noción de una biblioteca de formularios que se adapta 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 instalar y configurar, y algo que no se interponga en el uso normal de HTML/JS/CSS.
Negación FIN
He intentado 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 potente 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 su 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 viene 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 usando JSON-Schema y ser capaz 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 se desatará 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 elegir 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 arriba y recién llegados:
Esta pregunta fue hecha y respondida hace más de 2 años y no hay ninguno de los "debates, discusiones, encuestas o discusiones extensas" que ustedes dijeron que "probablemente" sucederá. Un poco demasiado entusiasta, tal vez? –