FormPump

Screenshot der Software:
FormPump
Softwarebeschreibung:
Version: 0.1.7
Upload-Datum: 20 Feb 15
Entwickler: Dave Mankoff
Lizenz: Frei
Popularität: 5

Rating: nan/5 (Total Votes: 0)

FormPump ist ein Python-Tool, mit populären Templating Engines integriert, so dass Sie sauber in HTML-Formulare ausfüllen.
Die FormPump ist eine Sammlung von Python-Template-Engine-Erweiterungen geschrieben, um HTML-Formulare wesentlich einfacher zu handhaben. Es befasst sich direkt die Probleme, die Eintragungen in Werte in Ihrer Eingaben, Aufbringen von Etiketten auf Ihre Eingaben und Anzeige von Fehlermeldungen in einen schnellen Weg stehen. Es tut dies durch die Einführung einer Reihe von Tags / Funktionen in Ihre Vorlage, die Formen Elemente in einer intuitiven und natürliche Art und Weise, die schnell in die bestehenden Code anzupassen erstellen.
Derzeit FormPump unterstützt Jinja2.
An Introductory [Jinja2] Beispiel
(Beispiele in dieser Readme gezeigt werden Jinja2 gezeigt. Andere Template-Sprachen werden ähnliche Verwendung haben.)
>>> Von formpump Import JinjaPump
>>> Von jinja2 Import Umwelt
>>> Env = Environment (extensions = [JinjaPump])
>>> Tpl = env.from_string ('' '
... {% Formular "Beispiel" class = "simple-Form"%}
... {% Label "inp"} Geben Sie einen Wert: {% Endlabel%}
... {% Text "inp"%}
... {% Endform%}
... '' ')
>>> Print tpl.render ()


& Nbsp;
& Nbsp;

& Nbsp;>>> Druck tpl.render (form_vars = {"Beispiel": {"inp": 123}})

& Nbsp;
& Nbsp;

Im obigen Beispiel sehen wir eine einfache Template-Objekt geschaffen, die ein Formular enthält. Wenn ohne Argumente gemacht, er druckt einfach das Formular ohne Daten ausgefüllt. Keine Werte in das Formular zu finden, wie sie es generiert Wenn die spezielle "form_vars" dict vorgesehen ist, füllt es.
Sie können auch feststellen, die lange, hässliche id Attribute, die eingestellt wurden. Diese werden benötigt, damit FormPump können Etiketten mit Eingängen zu beteiligen; FormPump macht sie sich, wie es geht. Sie sind frei, sie zu sich selbst, indem einfach Ihren eigenen ID und für Attribute auf Elemente überschreiben. FormPump verfolgt automatisch den Etiketten und Eingänge in der Vorlage und versucht, auf intelligente Weise verbinden diese miteinander, jedoch nur, wenn die Eingänge nicht-IDs angegeben, und Etiketten nicht für ist angegeben haben.
Formblätter Ausfüllen
FormPump füllt Formulare durch Nachschlagen Eingabewerte in benannten Template-Variable. Diese Variable ist standardmäßig form_vars sondern kann durch Setzen des values_dict_name Eigentum der Erweiterung konfiguriert werden (für Jinja2, setzen Sie diese auf die Umwelt: env.values_dict_name).
form_vars ist ein Wörterbuch der Wörterbücher. Top-Level-Schlüssel sind die Form Kontextbezeichner, erklärt im folgenden näher. Jede Form Zusammenhang bezieht sich auf ein anderes Wörterbuch, das eine einfache Reihe von Schlüssel-Wert-Paare, die FormPump verwendet, um Werte für das Formular nachschlagen ist. Die Schlüssel finden Sie in der Eingangsnamen. Die Werte werden sich der Wert Attribut * für die Eingabe, in Unicode konvertiert.
* Hinweis: Für Eingänge wie ein Optionsfeld, in dem die Werte vorgegeben sind, benutzt FormPump die form_vars Wert zu bestimmen, welches Optionsfeld, um eine Vorauswahl, wenn überhaupt.
Formularkontext des
FormPump können Sie mehr als eine Form in der Vorlage haben. Jede Form kann sich überlappenden Eingangs Namen haben. Die Formulare werden von dem, was FormPump ruft die Formularkontext eindeutig gemacht. Das obige Beispiel zeigt eine Art Kontext zu "Beispiel" gesetzt - es ist die Zeichenfolge unmittelbar nach der Form Schlüsselwort. Die Zeichenfolge muss eine Konstante Zeichenfolge, keine Variable oder anderen dynamischen Ausdruck, (es gibt einen Weg, um dieses unten bedeckt) sein.
Ein einfaches Beispiel soll ihre Nutzung zu klären:
& Nbsp;>>> tpl = env.from_string ('' '
... {% Form "a"%}
... {% Text "inp"%}
... {% Endform%}
... {% Form "b"%}
... {% Text "inp"%}
... {% Endform%}
... '' ')
& Nbsp;>>> Druck tpl.render (form_vars = {'a': {"inp": "A"}, "b": {"inp": "B"}})

& Nbsp;


& Nbsp;

Form Kontexten tatsächlich einen doppelten Zweck dienen. Ein gemeinsames Hindernis mit mit mehreren HTML-Formulare auf einer Seite ist, dass kann schwierig sein, festzustellen, welche Form eingereicht wurde, wenn beide Formen haben die gleiche Wirkung Attribut. Form Kontexten kann helfen.
Mit den Standardeinstellungen, wie bisher dargestellt, haben sie keine direkte Auswirkung auf den Ausgang. Wenn Sie jedoch die form_name_key Eigenschaft über die Verlängerung eingestellt, FormPump automatisch eine versteckte Eingang, der die Form Kontextwert wie der Name, (für Jinja2, setzen Sie diese auf die Umwelt) einzulegen.
& Nbsp;>>> env.form_name_key = '__'
& Nbsp;>>> tpl = env.from_string ('' '
... {% Formular "Beispiel"%}
... {% Endform%}
... '' ')
& Nbsp;>>> Druck tpl.render ()


Die eingereichten Wert kann dann verwendet werden, um leicht die vorgelegten Form auf dem Server sein.
Aber, mit dieser Funktion öffnet sich eine weitere Komplikation! Sagen wir, wir haben wollen, eine Form wiederholt mehrmals auf einer einzigen Seite. Bei jeder Wiederholung der Form, um die Variablen, die vorgefüllt sind, ändern wir. Zum Beispiel, Sie haben eine Liste von Personen in einem Unternehmen haben, und Sie müssen in der Lage, zu bearbeiten und senden Sie Updates für die Telefonnummer für jeden sein wollen. Sie wollen also die gleiche formname zurück an den Server gesendet, sondern eine _different Formularkontext, wenn Sie das Formular ausfüllen. Geben Sie den form_ctx Funktion, mit der Sie den Kontext, in dem FormPump schaut auf Werte von im laufenden Betrieb zu ändern. Die form_ctx Funktion erlaubt Ihnen auch, dynamischen Kontext Namen, Ihre Formen, die die Standard-Form-Funktion nicht zugewiesen werden:
& Nbsp;>>> tpl = env.from_string ('' '
...

    ... {% Für Person Personen%}
    ...

  • ... {% Formular "Person"%}
    ... {% Form_ctx "Person.% D"% person ['id']%}
    ... {% Versteckten "id"%}
    ... {% Label "Telefon"%} {{person ['name']}} {% Endlabel%}
    ... {% Text "Telefon"%}
    ... {% Endform%}
    ...

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

... '' ')
& Nbsp;>>> Menschen = [{'id': 1, "name": "Bill B.", "Telefon": "555-123-4567"},
... {'Id': 2, "name": "Chris C", "Telefon": "555-7654-321"}]
& Nbsp;>>> Druck tpl.render (Personen = Menschen,
... Form_vars = dict ([('Person.% D'% person ['id'], Person) für die Person in die Menschen]))

    & Nbsp;

  • & Nbsp;

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

    & Nbsp;

  • & Nbsp;

  • & Nbsp;

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

    & Nbsp;

Wenn Sie oben schauen, werden Sie zwei Formen, die beide mit dem gleichen Formularnamen zu sehen, aber mit unterschiedlichen Werten in dank der dynamischen form_ctx gefüllt. Die form_ctx Funktion wirkt auf alle Eingänge, die nach ihm kommen. Sie können mehrere form_ctx die in einer Form an, ob Sie möchten, die jeweils vorgegriffen die vorherige. Beachten Sie jedoch, dass sein kann stilistisch verwirrend werden.
Formular-Fehler
Formfehler funktionieren ähnlich wie form_vars. Sie verwenden die Fehlerfunktion in der Vorlage, um anzuzeigen, wo Fehler gehen soll, und geben Sie dann form_error als verschachtelte Wörterbuch der Wörterbücher, die beliebige und alle Fehlermeldungen, die Sie gerne in. Jeder Fehler, der einen entsprechenden Wert in der nicht findet form_error Nachschlagetabelle wird aus der endgültigen Ausgabe gelassen werden.
>>> Tpl = env.from_string ('' '
... {% Formular "Beispiel"%}
... {% Fehler "Field_A"%}
... {% Text "Field_A"%}
... {% Fehler "FELD_B"%}
... {% Text "FELD_B"%}
... {% Endform%}
... '' ')
>>> Print tpl.render (form_vars = {"Beispiel": {"Field_A": "val A", "FELD_B": "val B"}},
... Form_errors = {"Beispiel": {"FELD_B": "Fehler B"}})

& Nbsp;
& Nbsp;
Fehler B

& Nbsp;

Beachten Sie auch, dass alle Eingaben, die einen Fehler finden, haben Sie die "Fehler" CSS-Klasse zu ihnen aufgenommen.
Fehlermeldungen standardmäßig ausgegeben werden, wie oben & mdash; in einem div mit der Klasse "Fehlermeldung". {% Fehler Renderer = "custom"%}: Sie können Ihre eigenen Fehlermeldung Stil durch Zuweisung Funktionen seiner error_renderers Wörterbuch und dann unter Angabe der Attribut-Renderer in der Vorlage festlegen. . Standardmäßig werden alle Fehler mit dem "default" Renderer, die Sie sind frei, außer Kraft zu setzen

Anforderungen :

  • Python

Andere Software von Entwickler Dave Mankoff

htmlmin
htmlmin

12 May 15

Kommentare zu FormPump

Kommentare nicht gefunden
Kommentar hinzufügen
Schalten Sie auf die Bilder!