FormPump

Software skärmdump:
FormPump
Mjukvaruinformation:
Version: 0.1.7
Ladda upp dagen: 20 Feb 15
Utvecklare: Dave Mankoff
Licens: Gratis
Popularitet: 5

Rating: nan/5 (Total Votes: 0)

FormPump är ett Python verktyg som integrerar med populära mall motorer, så att du kan rent fylla i HTML-formulär.
Den FormPump är en samling av Python-mall motor förlängningar skrivna för att göra HTML-formulär mycket lättare att arbeta med. Det tacklar direkt problemen med att fylla i värden i dina ingångar, applicera etiketter på dina ingångar och visa felmeddelanden på ett snabbt sätt. Det gör detta genom att införa en uppsättning taggar / funktioner i din mall som skapar former element i ett intuitivt och naturligt sätt som går snabbt att anpassa sig till befintlig kod.
För närvarande stöder FormPump Jinja2.
En inledande [Jinja2] Exempel
(Exempel visas i denna README visas i Jinja2. Andra mallspråk kommer att ha liknande användning.)
>>> Från formpump import JinjaPump
>>> Från jinja2 import Miljö
>>> Env = Miljö (extensions = [JinjaPump])
>>> Tpl = env.from_string ('' '
... {% Formuläret "exempel" class = "enkel-formen"%}
... {% Label 'ing "} Ange ett värde: {% ENDLABEL%}
... {% Text "ing"%}
... {% Endform%}
... '' ')
>>> Utskrifts tpl.render ()


& Nbsp;
& Nbsp;

& Nbsp;>>> print tpl.render (form_vars = {'exempel': {"ing": 123}})

& Nbsp;
& Nbsp;

I exemplet ovan, ser vi en enkel mall objekt som skapas som innehåller ett formulär. När lats utan några argument, helt enkelt skriver ut formuläret med ingen information fyllas i. När de speciella "form_vars" dict tillhandahålls, fyller några värden den kan hitta i den form som den genererar den.
Du kan också märka de långa, fula id attribut som ställdes. Dessa krävs för att FormPump kan associera etiketter med ingångar; FormPump gör upp dem som det går. Du är fri att åsidosätta dem själv genom att helt enkelt ge din egen id och för attribut på dina element. FormPump automatiskt håller reda på de etiketter och insatsvaror i mallen och försöker intelligent associera dem med varandra, men bara när ingångarna inte har id anges och etiketter har inte för är specificerat.
fylla i blanketter
FormPump fyller i formulär genom att slå upp ingångsvärden i utsedda mallvariabeln. Denna variabel standard form_vars men kan konfigureras genom att ställa in values_dict_name egenskapen av förlängningen (för Jinja2, ställa in detta på miljön: env.values_dict_name).
form_vars är en ordbok av ordböcker. Top level nycklar är de formulär kontext identifierare, förklaras mer i detalj nedan. Varje formulär sammanhang hänvisar till en annan ordlista som är en enkel uppsättning av nyckel-värde-par som FormPump använder för att slå upp värden för formuläret. Nycklarna hänvisar till ingångsnamnet. Värdena blir värdeattributet * för inmatning, konverteras till Unicode.
* Anmärkning: För ingångar som en radioknapp, där värdena är förutbestämda, använder FormPump det form_vars värdet för att avgöra vilken alternativknappen för att i förväg välja, om något.
Form Context: s
FormPump kan du ha mer än en form i din mall. Varje formulär kan ha överlappande ingångsnamn. Blanketterna är otvetydiga av vad FormPump kallar formuläret sammanhanget. Exemplet ovan visar ett formulär kontext inställd på "exempel" - det är strängen omedelbart efter formen nyckelordet. Strängen måste vara en konstant sträng, inte en variabel eller annat dynamiskt uttryck, (det finns en väg runt detta täcks nedan).
Ett enkelt exempel bör klargöra deras användning:
& Nbsp;>>> tpl = env.from_string ('' '
... {% Formuläret "en"%}
... {% Text "ing"%}
... {% Endform%}
... {% Formuläret "b"%}
... {% Text "ing"%}
... {% Endform%}
... '' ')
& Nbsp;>>> print tpl.render (form_vars = {'a': {"ing": "A"}, "b": {"ing": "B"}})

& Nbsp;


& Nbsp;

Form sammanhang faktiskt tjänar ett dubbelt syfte. Ett vanligt hinder med att ha flera HTML-formulär på en sida är att kan vara svårt att avgöra vilka formulär lämnades om båda formerna har samma åtgärd attribut. Form sammanhang kan hjälpa.
Med standardinställningarna, som visas hittills, de har ingen direkt effekt på utgången. Men om du ställer in form_name_key fastighet på förlängningen, FormPump automatiskt infoga en dold ingång som innehåller formuläret sammanhanget värdet som dess namn, (för Jinja2, ställa in detta på miljön).
& Nbsp;>>> env.form_name_key = '__'
& Nbsp;>>> tpl = env.from_string ('' '
... {% Formuläret "exempel"%}
... {% Endform%}
... '' ')
& Nbsp;>>> print tpl.render ()


Den inskickade värdet kan sedan användas för att enkelt identifiera de inlämnade formulär på servern.
Men, med den här funktionen tar upp ytterligare en komplikation! Säg att vi vill ha en form upprepas flera gånger på en och samma sida. Med varje upprepning av formuläret, vill vi förändra de variabler som förfyllda. Till exempel, säga att du har en lista över personer i ett företag, och du vill kunna redigera och skicka uppdateringar till telefonnumret för var och en. Du vill alltså samma formname lämnats tillbaka till servern, men en _different formulär sammanhang när du fyller i formuläret. Ange form_ctx funktion, vilket gör att du kan ändra den kontext där FormPump tittar upp värden från i farten. Den form_ctx funktionen kan du också tilldela dynamiska kontextnamn till dina former, som standardformuläret fungerar inte:
& Nbsp;>>> tpl = env.from_string ('' '
...

    ... {% För personer i människor%}
    ...

  • ... {% Formuläret "person"%}
    ... {% Form_ctx "person.% D"% personen ['id']%}
    ... {% Dold "id"%}
    ... {% Label "telefon"%} {{personen ['namn']}} {% ENDLABEL%}
    ... {% Text "telefon"%}
    ... {% Endform%}
    ...

  • ... {% EndFor%}
    ...

... '' ')
& Nbsp;>>> människor = [{'id': 1, "namn": "Bill B.", "telefon": "555-123-4567"},
... {'Id': 2, "namn": "Chris C.", "telefon": "555-7654-321"}]
& Nbsp;>>> utskrifts tpl.render (människor = folk,
... Form_vars = dict ([('person.% D'% personen ['id'], person) för personen i människor]))

    & Nbsp;

  • & Nbsp;

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

    & Nbsp;

  • & Nbsp;

  • & Nbsp;

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

    & Nbsp;

Om du tittar ovan ser du två former, både med samma formulärnamn, men med olika värden ifyllda tack vare den dynamiska form_ctx. Den form_ctx funktion påverkar alla ingångar som kommer efter det. Du kan ange flera form_ctx s i ett formulär om du vill, var och en föregripa den föregående. Observera dock att hans kan bli stilist förvirrande.
Formulär Fel
Form fel fungerar ungefär som form_vars. Du använder felfunktionen i din mall för att visa var fel ska gå, och sedan ange form_error som en kapslad lexikon ordböcker innehåller något och alla felmeddelanden som du skulle vilja sätta in. Alla fel som inte hittar ett motsvarande värde i den form_error lookup kommer att lämnas ut av den slutliga utgången.
>>> Tpl = env.from_string ('' '
... {% Formuläret "exempel"%}
... {% Error "field_A"%}
... {% Text "field_A"%}
... {% Error "field_B"%}
... {% Text "field_B"%}
... {% Endform%}
... '' ')
>>> Print tpl.render (form_vars = {"exempel": {"field_A": "val A", "field_B": "val B"}},
... Form_errors = {"exempel": {"field_B": "error B"}})

& Nbsp;
& Nbsp;
error B

& Nbsp;

Observera också att några insatsvaror som hittar ett fel kommer att ha "fel" css klass läggs till dem.
Felmeddelanden som standard är utdata som ovan & ndash; i en div med klassen "error-meddelande". Du kan ange ett eget felmeddelande stil genom att tilldela funktioner till sitt error_renderers ordbok och sedan ange renderaren attributet i mallen: {% error renderaren = "custom"%}. . Som standard är alla fel använda "default" renderare som du är fri att åsidosätta

Krav :

  • Python

Annan programvara för utvecklare Dave Mankoff

htmlmin
htmlmin

12 May 15

Kommentarer till FormPump

Kommentarer hittades inte
Kommentar
Slå på bilder!