FormPump

Skjermbilde programvare:
FormPump
Prog.varedetaljer:
Versjon: 0.1.7
Last opp dato: 20 Feb 15
Utvikler: Dave Mankoff
Lisens: Gratis
Popularitet: 5

Rating: nan/5 (Total Votes: 0)

FormPump er en Python verktøy som integreres med populære templating motorer, slik at du kan utføre en ren fylle i HTML-skjemaer.
Den FormPump er en samling av Python mal programutvidelser skrevet for å lage HTML-skjemaer mye lettere å jobbe med. Den takler direkte problemene knyttet til utfylling av verdier inn dine innganger, bruke etiketter til dine innganger og vise feilmeldinger på en rask måte. Den gjør dette ved å innføre et sett av tags / funksjoner inn i malen som skaper former elementer i en intuitiv og naturlig måte som er raske til å tilpasse seg inn i eksisterende kode.
I dag støtter FormPump Jinja2.
An Introductory [Jinja2] Eksempel
(Eksempler er vist i denne README er vist i Jinja2. Andre templating språk vil ha lignende bruk.)
>>> Fra formpump import JinjaPump
>>> Fra jinja2 import Miljø
>>> Env = Environment (extensions = [JinjaPump])
>>> Tpl = env.from_string ('' '
... {% Skjema "eksempel" class = "enkel-skjema«%}
... {% Etiketten "inp '} Oppgi en verdi: {% endlabel%}
... {% Teksten "inp«%}
... {% Endform%}
'' ... ')
>>> Print tpl.render ()


& Nbsp;
& Nbsp;

& Nbsp;>>> print tpl.render (form_vars = {'eksempel': {'inp': 123}})

& Nbsp;
& Nbsp;

I eksempelet ovenfor, ser vi en enkel mal objekt blir opprettet som inneholder ett skjema. Når gjengis uten argumenter, bare skriver den ut skjemaet med ingen informasjon fylles ut. Når de spesielle "form_vars" dict er gitt, fyller det noen verdier det kan finne i skjemaet som det genererer det.
Du kan også legge merke til de lange, stygge id attributter som ble satt. Disse er nødvendig, slik at FormPump kan knytte etiketter med innganger; FormPump gjør dem opp som det går. Du står fritt til å overstyre dem selv ved ganske enkelt å gi din egen id og for attributter på dine elementer. FormPump holder automatisk styr på etikettene og innganger i malen og forsøker å intelligent knytte dem til hverandre, men bare når de inngangene ikke har id-er spesifisert, og etikettene har ikke for er spesifisert.
fylle ut skjemaer
FormPump fyller ut skjemaer ved å se opp inngangsverdier i egen mal variabel. Denne variabelen som standard form_vars men kan konfigureres ved å sette values_dict_name eiendom av utvidelsen (for Jinja2, sett denne på miljøet: env.values_dict_name).
form_vars er en ordbok av ordbøker. Toppnivå tastene er skjemaet kontekst identifikatorer, forklart i mer detalj nedenfor. Hver form sammenheng refererer til en annen ordbok som er et enkelt sett med nøkkelverdipar at FormPump bruker til å slå opp verdier for skjemaet. Tastene se type inngangen. Verdiene er blitt verdien attributtet * for innspill, konvertert til Unicode.
* Merk: For innganger som en alternativknapp, der verdiene er forhåndsbestemt, bruker FormPump den form_vars verdi for å avgjøre hvilken radio knappen for å forhåndsvelge, hvis noen.
Form Kontekst s
FormPump tillater deg å ha mer enn ett skjema i malen. Hver form kan ha overlappende inngangsnavn. Skjemaene disambiguated av hva FormPump kaller form sammenheng. Eksempelet ovenfor viser en form sammenheng satt til "eksempel" - det er strengen umiddelbart etter skjema nøkkelordet. Strengen må være en konstant streng, ikke en variabel eller annen dynamisk uttrykk, (det er en måte å løse dette dekket nedenfor).
Et enkelt eksempel bør avklare deres bruk:
& Nbsp;>>> tpl = env.from_string ('' '
... {% Skjema "a"%}
... {% Teksten "inp«%}
... {% Endform%}
... {% Skjema "b"%}
... {% Teksten "inp«%}
... {% Endform%}
'' ... ')
& Nbsp;>>> print tpl.render (form_vars = {'a': {'inp': 'A'}, 'b': {'inp': 'B'}})

& Nbsp;


& Nbsp;

Form sammenhenger faktisk tjene et dobbelt formål. En vanlig hindring med å ha flere HTML-skjemaer på en enkelt side er det kan være vanskelig å avgjøre hvilken form ble sendt dersom begge formene har samme handling attributtet. Form sammenhenger kan hjelpe.
Med standardinnstillingene, som vist så langt, de har ingen direkte effekt på produksjonen. Men hvis du setter form_name_key eiendom på forlengelse, FormPump vil automatisk sette inn en skjult inngang som inneholder skjemaet sammenheng verdi som navnet, (for Jinja2, sett denne på miljøet).
& Nbsp;>>> env.form_name_key = '__'
& Nbsp;>>> tpl = env.from_string ('' '
... {% Skjema "eksempel"%}
... {% Endform%}
'' ... ')
& Nbsp;>>> print tpl.render ()


Den innsendte verdien kan deretter brukes til å enkelt identifisere den innsendte skjema på serveren.
Men, ved hjelp av denne funksjonen bringer opp en mer komplikasjon! Si at vi ønsker å ha en form gjentas flere ganger på én side. Med hver repetisjon av skjemaet, vi ønsker å endre de variablene som er ferdig utfylt. For eksempel si at du har en liste over personer i et selskap, og du vil være i stand til å redigere og sende oppdateringer til telefonnummeret for hver enkelt. Du ønsker altså at samme formname sendt tilbake til serveren, men en _different skjema sammenheng når du fyller ut skjemaet. Skriv inn form_ctx funksjon, som lar deg endre sammenhengen der FormPump ser opp verdier fra på fly. Den form_ctx funksjonen gjør det mulig å tildele dynamiske kontekst navn til dine former, som standard skjema funksjonen ikke:
& Nbsp;>>> tpl = env.from_string ('' '
...

    ... {% For person i folk%}
    ...

  • ... {% Skjema "person"%}
    ... {% Form_ctx "person.% D"% person ['id']%}
    ... {% Skjult "id"%}
    ... {% Label "telefon"%} {{person ['navn']}} {% endlabel%}
    ... {% Teksten "telefon"%}
    ... {% Endform%}
    ...

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

'' ... ')
& Nbsp;>>> folk = [{'id': 1, 'navn': 'Bill B.', 'telefon': '555-123-4567'},
... {'Id': 2, 'navn': 'Chris C.', 'telefon': '555-7654-321'}]
& Nbsp;>>> print tpl.render (People = folk,
... Form_vars = dict ([('person.% D'% person ['id'], person) for person i mennesker]))

    & Nbsp;

  • & Nbsp;

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

    & Nbsp;

  • & Nbsp;

  • & Nbsp;

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

    & Nbsp;

Hvis du ser ovenfor, vil du se to former, både med samme form navn, men med ulike verdier fylt i takket være den dynamiske form_ctx. Den form_ctx funksjon påvirker alle innganger som kommer etter det. Du kan spesifisere flere form_ctx er i en form hvis du vil, hver og en pre-Tømming den forrige. Merk imidlertid at hans kan bli stilistisk forvirrende.
Form Feil
Skjemafeil arbeidet mye som form_vars. Du bruker feil funksjon i malen for å indikere hvor feil bør gå, og deretter angi form_error som en nestet ordbok av ordbøker inneholder noen og alle feilmeldingene du ønsker å sette inn. Eventuelle feil som ikke finner en tilsvarende verdi i form_error oppslag vil bli tatt ut på det endelige resultatet.
>>> Tpl = env.from_string ('' '
... {% Skjema "eksempel"%}
... {% Error "field_A«%}
... {% Teksten "field_A«%}
... {% Error "field_B«%}
... {% Teksten "field_B«%}
... {% Endform%}
'' ... ')
>>> Print tpl.render (form_vars = {"eksempel": {"field_A": "val A", "field_B": "val B"}}
... Form_errors = {"eksempel": {"field_B": "error B"}})

& Nbsp;
& Nbsp;
error B

& Nbsp;

Merk også at noen innganger som finner en feil vil ha "feil" css class lagt til dem.
Feilmeldinger som standard er utgang som ovenfor & mdash; i en div med klassen "feilmeldingen". Du kan spesifisere din egen feilmelding stil ved å tilordne funksjoner til sin error_renderers ordbok og deretter angi renderer attributt i malen: {% error renderer = "tilpasset"%}. . Som standard alle feil bruke "standard" renderer som du står fritt til å overstyre

Krav :

  • Python

Annen programvare fra utvikleren Dave Mankoff

htmlmin
htmlmin

12 May 15

Kommentarer til FormPump

Kommentarer ikke funnet
Legg til kommentar
Slå på bilder!