2010-07-07 25 views
36

me gustaría una biblioteca de formularios de validación queRecomendación para la biblioteca de la validación de formularios pitón

1.separate generación de HTML de la validación del formulario;

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

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

+9

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? –

Respuesta

1

Depende de cuándo y qué tipo de marco utiliza.

Para su tarea, le recomendaría usar el web2py-Framework, que es fácil de usar y aún "poderoso". Tiene form-validation by default (el web2py-book es gratis), que hace exactamente lo que usted desea: Seperea la generación 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 aquellas preguntas que es la mejor para preguntarles sobre la web2py-group. Son muy amables y te ayudarán muy rápido.

Espero que ayude! Saludos cordiales ..

+0

@ Satoru.Logic gracias por -1 por una respuesta, me paso el tiempo para ... de todos modos, explica lo que quieres decir con "web2py sucks"? – Joschua

+0

>. satoru

+0

¿Por qué crees que tienes que usar la variable 'session'? también la mayoría de los demás están configurados en db.py, pero puede eliminarlos, como p. db, auth, crud, servicio, correo. – Joschua

0

depende del marco subyacente que utilice.

de Django, construido en el marco de forma que es mejor,

mientras Kay utiliza versión extendida del sistema de forma zine

y tipfy utiliza WTForms.

El sistema integrado de django es el mejor hasta ahora.

¿qué marco utilizas debajo del capó?

+1

Gracias. Actualmente estoy usando el framework de formularios integrado de Django. Me pregunto si hay alguna otra biblioteca de formularios que pueda probar. – satoru

+1

si tiene una necesidad específica, recomiendo extender el framework incorporado, lo he intentado muchas veces pero nada supera a django. – iamgopal

41

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:

+0

[Colander] (http://colander.readthedocs.org/en/latest/) ha estado trabajando para mí, FYI. – KurtB

4

Este tema es un poco viejo, pero pensé que podría descaradamente conectar 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

Cuestiones relacionadas