37 votes

Recommandation pour la bibliothèque de validation de formulaire python

Je voudrais une bibliothèque de validation de formulaire qui

1.séparer la génération html à partir de la validation du formulaire;

Les erreurs 2.validation peuvent être facilement sérialisées, par exemple. vidé comme un objet json

Quelle bibliothèque de validation de formulaire choisiriez-vous dans un projet Web Python?

44voto

Y.H Wong Points 3810

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:

12voto

Marius Gedminas Points 3299

Je choisirais probablement WTForms .

4voto

Wilhelm Murdoch Points 860

Ce sujet est un peu ancien, mais je pensais que je brancherais sans vergogne une bibliothèque que j'ai écrite à cette fin. Ce n'est pas exclusif aux formulaires HTML, mais a été écrit avec eux, au moins partiellement, à l'esprit.

Je ne me sentais pas très créatif quand je l'ai nommé, donc "Validator" devra le faire pour le moment. Ici vous allez: https://github.com/wilhelm-murdoch/Validator

1voto

Joschua Points 1407

Il dépend du climat, et puis, de quel type de cadre que vous utilisez.

Pour votre tâche, je vous recommande d'utiliser le web2py-Cadre, qui est facile à utiliser et "puissant". Il a la forme de validation par défaut (le web2py-book est gratuit), qui fait exactement ce que vous voulez: Il sepereates la génération html à partir de la validation et le fait automatiquement, mais vous pouvez, si vous le souhaitez, personnaliser.

Un exemple:

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)

Il est également possible de sérialiser des erreurs, mais pour ces questions, il est le meilleur pour les poser sur la web2py-groupe. Ils sont très sympas et vous aideront à très vite.

Espérons que cela aide! En ce qui concerne meilleur..

0voto

iamgopal Points 1575

cela dépend du cadre sous-jacent que vous utilisez.

pour django, la structure de formulaire intégrée est préférable,

tandis que kay utilise la version étendue du système de formulaire de zine

et tipfy utilise WTForms.

Le système intégré de Django est le meilleur jusqu'à présent.

quel cadre utilisez-vous sous le capot?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X