FormPump

Logiciel capture d'écran:
FormPump
Détails logiciels:
Version: 0.1.7
Date de transfert: 20 Feb 15
Développeur: Dave Mankoff
Licence: Gratuit
Popularité: 5

Rating: nan/5 (Total Votes: 0)

FormPump est un outil de Python qui se intègre aux moteurs de modèles populaires, vous permettant de remplir proprement dans les formulaires HTML.
Le FormPump est une collection de Python extensions du moteur de template écrit pour faire des formulaires HTML beaucoup plus facile de travailler avec. Il aborde directement les problèmes liés au remplissage des valeurs dans vos entrées, appliquer des étiquettes sur vos entrées et l'affichage des messages d'erreur d'une manière rapide. Elle le fait en introduisant un ensemble de tags / fonctions dans votre modèle qui créent des éléments de formes de manière intuitive et naturelle qui est rapide à se adapter dans le code existant.
À l'heure actuelle, FormPump soutient Jinja2.
Une introduction [Jinja2] Exemple
(Exemples présentés dans ce README sont présentés dans Jinja2. Autres langues de gabarits auront utilisation similaire.)
>>> From JinjaPump d'importation formpump
>>> From jinja2 importation Environnement
>>> Env = environnement (extensions = [JinjaPump])
>>> Tpl = env.from_string ('' '
... {Forme% classe "exemple" = "simple forme"%}
... {% Label 'InP'} Entrez une valeur: {% ENDLABEL%}
... {Texte% "InP"%}
{...}% Conformation terminale%
... '' ')
>>> Print tpl.render ()


& Nbsp;
& Nbsp;

& Nbsp;>>> print tpl.render (form_vars = {"exemple": {"InP": 123}})

& Nbsp;
& Nbsp;

Dans l'exemple ci-dessus, nous voyons un objet simple modèle en cours de création qui contient une forme. Lors du rendu sans aucun argument, il affiche simplement le formulaire avec aucune information rempli. Lorsque les "form_vars" spéciaux dict est fourni, il remplit toutes les valeurs qu'il peut trouver dans la forme dans laquelle il génère.
Vous pouvez également remarquer les attributs id, laides longues qui ont été fixés. Ceux-ci sont nécessaires pour que FormPump peut associer des étiquettes avec des entrées; FormPump rend comme il va. Vous êtes libre de les remplacer vous-même en fournissant simplement votre propre id et pour les attributs de vos éléments. FormPump conserve automatiquement la trace des étiquettes et des entrées dans le modèle et les tentatives de les associer intelligemment avec l'autre, mais seulement lorsque les entrées ne ont pas id spécifié, et les étiquettes ne ont pas pour se spécifiée.
remplir les formulaires
FormPump remplit les formulaires en consultant les valeurs d'entrée dans la variable de template désignée. Cette variable par défaut form_vars mais peuvent être configurés en définissant la propriété de values_dict_name de l'extension (pour Jinja2, réglez ce sur l'environnement: env.values_dict_name).
form_vars est un dictionnaire des dictionnaires. Clés de haut niveau sont les identificateurs de contexte de forme, expliqués plus en détail ci-dessous. Chaque contexte de forme se réfère à un autre dictionnaire qui est un simple jeu de paires clé-valeur qui FormPump utilise de rechercher des valeurs pour la forme. Les touches se réfèrent au nom de l'entrée. Les valeurs sont devenues l'attribut de valeur * pour l'entrée, convertie en unicode.
* Note: Pour les entrées comme un bouton radio, où les valeurs sont prédéterminées, FormPump utilise la valeur de form_vars pour déterminer quel bouton radio pour présélectionner, le cas échéant.
Contexte de formulaire de
FormPump vous permet d'avoir plus d'une forme dans votre modèle. Chaque formulaire peut avoir des noms d'entrée se chevauchent. Les formes sont désambiguïsés par ce FormPump appelle le contexte de formulaire. L'exemple ci-dessus montre un contexte de forme prévue à «exemple» - ce est la chaîne qui suit immédiatement la forme mot-clé. La chaîne doit être une chaîne constante, pas une expression dynamique variable ou autre, (il ya un moyen de contourner ce traité ci-dessous).
Un exemple simple devrait clarifier leur utilisation:
& Nbsp;>>> tpl = env.from_string ('' '
... {Forme% "a"%}
... {Texte% "InP"%}
{...}% Conformation terminale%
... {Forme% "b"%}
... {Texte% "InP"%}
{...}% Conformation terminale%
... '' ')
& Nbsp;>>> print tpl.render (form_vars = {'a': {'InP': 'A'}, 'b': {'InP': 'B'}})

& Nbsp;


& Nbsp;

contextes de formulaires servent en fait un double objectif. Un obstacle commun d'avoir des formulaires HTML multiples sur une seule page, ce est que peut être difficile de déterminer quelle forme a été soumis si les deux formes ont le même attribut action. contextes de formulaires peuvent aider.
Avec les réglages par défaut, comme indiqué jusqu'à présent, ils ne ont aucun effet direct sur la sortie. Toutefois, si vous définissez la propriété form_name_key sur l'extension, FormPump insère automatiquement une entrée cachée qui contient la valeur de la forme de contexte comme son nom, (pour Jinja2, réglez ce sur l'environnement).
& Nbsp;>>> env.form_name_key = '__'
& Nbsp;>>> tpl = env.from_string ('' '
... {Forme% "exemple"%}
{...}% Conformation terminale%
... '' ')
& Nbsp;>>> print tpl.render ()


La valeur soumise peut alors être utilisée pour identifier facilement le formulaire soumis sur le serveur.
Mais, en utilisant cette fonction fait apparaître une complication plus! Disons que nous voulons avoir une forme répétée plusieurs fois sur une même page. Avec chaque répétition de la forme, nous voulons changer les variables qui sont préremplies. Par exemple, disons que vous avez une liste de personnes dans une entreprise, et que vous voulez être en mesure de modifier et soumettre mises à jour le numéro de téléphone pour chacun. Vous voulez donc le même formname soumis au serveur, mais un contexte de formulaire de _different au moment de remplir le formulaire. Entrez la fonction form_ctx, qui vous permet de changer le contexte où FormPump regarde valeurs à partir à la volée. La fonction de form_ctx vous permet également d'attribuer des noms de contexte dynamique à vos formulaires, qui la fonction de forme standard ne possède pas:
& Nbsp;>>> tpl = env.from_string ('' '
...

    ... {% Pour personne personnes%}
    ...

  • ... {Forme% "personne"%}
    ... {% Form_ctx «personne.% D" personne% ['id']%}
    ... {% Cachée "id"%}
    ... {Étiquette% "téléphone"%} {{personne ['nom']}} {% ENDLABEL%}
    ... {Texte% "téléphone"%}
    {...}% Conformation terminale%
    ...

  • {...}% Endfor%
    ...

... '' ')
& Nbsp;>>> personnes = [{'id': 1, 'nom': 'le projet de loi B. »,« Téléphone »:« 555-123-4567 »},
... {'Id': 2, 'nom': 'Chris C.', 'phone': '555-7654-321'}]
& Nbsp;>>> print tpl.render (personnes = peuple,
... Form_vars = dict ([(«personne.% D '% personne [' id '], personne) par personne chez les personnes]))

    & Nbsp;

  • & Nbsp;

    & Nbsp;
    & Nbsp;
    & Nbsp;
    & Nbsp;

    & Nbsp;

  • & Nbsp;

  • & Nbsp;

    & Nbsp;
    & Nbsp;
    & Nbsp;
    & Nbsp;

    & Nbsp;

Si vous regardez ci-dessus, vous verrez deux formes, deux avec le même nom de formulaire, mais avec des valeurs différentes remplis grâce à la form_ctx dynamique. La fonction form_ctx affecte toutes les entrées qui viennent après. Vous pouvez spécifier plusieurs form_ctx de sous une forme si vous voulez, chacun préjuger de la précédente. Il faut toutefois noter que son peut devenir stylistiquement confusion.
Erreurs Formulaire
erreurs de forme fonctionnent comme form_vars. Vous utilisez la fonction d'erreur dans votre modèle pour indiquer où les erreurs doivent aller, et puis spécifiez form_error comme un dictionnaire imbriquée de dictionnaires contenant l'un et tous les messages d'erreur que vous souhaitez mettre en. Toute erreur qui ne trouve pas une valeur correspondante dans le recherche form_error sera laissé sur le résultat final.
>>> Tpl = env.from_string ('' '
... {Forme% "exemple"%}
... {% D'erreur "Champ_A"%}
... {Texte% "Champ_A"%}
... {% D'erreur "Champ_B"%}
... {Texte% "Champ_B"%}
{...}% Conformation terminale%
... '' ')
>>> Print tpl.render (form_vars = {"exemple": {"Champ_A": "val", "Champ_B": "val B"}},
... Form_errors = {"exemple": {"Champ_B": "erreur B"}})

& Nbsp;
& Nbsp;
erreur B

& Nbsp;

Notez également que les entrées qui trouvent une erreur aura la classe ajouté à leur "erreur" de css.
Les messages d'erreur par défaut sont comme ci-dessus sortie & mdash; dans un div avec la classe "de message d'erreur". Vous pouvez spécifier votre propre message style erreur en attribuant des fonctions à son dictionnaire de error_renderers et en spécifiant l'attribut de rendu dans le modèle alors: {Erreur% rendu = "custom"%}. . Par défaut, toutes les erreurs utilisent le moteur de rendu «par défaut» que vous êtes libre de remplacer

Exigences :

  • Python

D'autres logiciels de développeur Dave Mankoff

htmlmin
htmlmin

12 May 15

Commentaires à FormPump

Commentaires non trouvées
Ajouter un commentaire
Tourner sur les images!