Avertissement
De manière générale, je suis un peu méfiant à propos de formulaire HTML bibliothèques. Si vous utilisez quelque chose à partir d'un méga-cadre, - vous toujours à apporter à l'ensemble de la méga-cadre de votre dépendance.
De nombreux sous-composants de plusieurs méga-cadres de la revendication de ne pas dépendre sur le cadre, mais ne nous leurrons pas. Si vous n'utilisez pas l'un, il ya au moins une douzaine de bibliothèques de formulaires que je sais que de là-bas avec un large éventail de différences dans les capacités. Juste le choix seul peut être assez déroutant. D'une façon générale, Ian Bicking dit il y a plusieurs années et est toujours vrai, je pense que la notion d'une forme de bibliothèque qui convient à tout le monde est tout à fait ridicule. En fait, je dirais que vous avez probablement besoin de réfléchir à deux fois avant de décider de vous avez vraiment besoin. Les Chances sont la plupart du temps, vous avez juste besoin d'un formulaire de validation de la bibliothèque comme FormEncode. Cela dépend vraiment de la façon dont vous voulez l'utiliser.
Pour moi, depuis que je n'utilise pas un méga-cadre, je choisirais quelque chose de léger, facile à sélectionner et à configurer, et quelque chose qui ne va pas dans la façon de l'utilisation normale de HTML/JS/CSS.
FIN de l'Avertissement
J'ai essayé ToscaWidgets, ToscaWidgets 2, Formish, de Déformation, WTForms et FormEncode. Je dois dire que aucun d'eux n'importe où près parfait. Voici mon expérience avec eux:
- ToscaWidgets, ToscaWidgets 2 - Extrêmement puissant, mais aussi très compliqué. ToscaWidgets 2 est beaucoup mieux, mais c'est encore assez alpha ATM. Il prend un peu de compétences de ninja pour l'installation et votre code ont tendance à gonfler assez rapidement quand vous en avez besoin pour personnaliser les modèles par défaut.
- Formish/Déformation Presque aussi puissant que TW mais Formish est en sommeil maintenant. Il est également très étroitement lié à Mako donc, si vous n'utilisez pas de Mako, c'est probablement pas pour vous. La déformation est une réécriture de Formish mais il apporte des tonnes de Zope dépendances. Caméléon est également pas tout à fait là encore en termes de soutien à d'autres templates langues autres que l'ZPT. Ces 2 bibliothèques sont également pas particulièrement facile à installer.
- WTForm - Très simple, ne va pas dans votre façon et c'est très active en termes de développement. C'est loin d'être aussi puissant que les bibliothèques ci-dessus, mais il s'occupe généralement de la de la de 80% des cas d'utilisation que vous pourriez rencontrer si elle est assez bonne.
- FormEncode - Essayé-et-vrai depuis 2005. Son bien-testé, est livré avec le plus grand nombre de prédéfinis validateurs, prend en charge conditionnelle de validation, et les messages d'erreur utiles dans des dizaines de langues. Il dispose également d'un très simple, mais ciblée, capacité à générer un code de formulaire en HTML pré-rempli avec les valeurs et les messages d'erreur. Ses inconvénients comprend un parfois non-intuitive de l'API et de ses absolument spagetti-comme le code interne. Cependant, cette bibliothèque est très fiable et s'adapte très bien à toutes les données de validation des cas d'utilisation et c'est celui que je reviens toujours.
À la fin de 2012, un rapide Google et PyPI recherche pour un Python de validation de la bibliothèque revient avec des centaines de colis. Il y a un peu plus d'une douzaine de notables, sans compter les personnes Django extensions, qui sont en cours de développement. Il semble y avoir une tendance à la définition d'un schéma à l'aide de JSON-Schéma et d'être en mesure de génériquement valider Python structures de données. C'est probablement un reflet de l'application serveur développeurs " le déplacement d'accepter les données de l'utilisateur à partir de multiples canaux (RESTful Api et des formulaires HTML), mais restent vouloir utiliser une seule validation de la bibliothèque.
Compte tenu de la version de Python 3.3, va probablement déclencher un mouvement massif vers le portage de bibliothèques existantes plus pour Python 3.x (le revers de la médaille, c'est de voir des anciennes bibliothèques stagnante et rester compatible uniquement avec Python 2.x), il peut être judicieux de choisir celui qui prend déjà en charge ou travaille activement à l'appui de Python 3.x.
Enfin, un autre grand domaine de préoccupation lors du choix d'une forme de validation de la bibliothèque est la possibilité de signaler les messages d'erreur utiles, qui ont invariablement comprend la nécessité pour la localisation des messages d'erreur dans le long terme. La facilité d'apporter vos propres messages d'erreur sera de déterminer rapidement la complexité de l'intégration de la bibliothèque avec le reste de votre architecture d'application Web.
Prometteur va-et-venus: