FormPump

Sagteware kiekie:
FormPump
Sagteware besonderhede:
Weergawe: 0.1.7
Upload datum: 20 Feb 15
Ontwikkelaar: Dave Mankoff
Lisensie: Gratis
Populariteit: 5

Rating: nan/5 (Total Votes: 0)

FormPump is 'n Python instrument wat integreer met die gewilde template enjins, sodat jy om te skoon in HTML vorms in te vul.
Die FormPump is 'n versameling van 'n afgestorwene sjabloon enjin uitbreidings geskryf HTML vorms baie makliker om te werk met te maak. Dit pak direk die probleme wat verband hou met die invul van waardes in jou insette, die toepassing van etikette aan jou insette en vertoon fout boodskappe in 'n vinnige manier. Hy doen dit deur die bekendstelling van 'n stel van etikette / funksies in jou sjabloon wat die skep van vorms elemente in 'n intuïtiewe en natuurlike manier wat vinnig aan te pas by bestaande kode.
Op die oomblik is, FormPump ondersteun Jinja2.
'n Inleidende [Jinja2] Voorbeeld
(Voorbeelde wat in hierdie README word in Jinja2 Ander template tale sal soortgelyke gebruik het..)
>>> Van formpump invoer JinjaPump
>>> Van jinja2 invoer Omgewing
>>> Env = Omgewing (uitbreidings = [JinjaPump])
>>> Tpl = env.from_string ('' '
... {% Vorm klas "byvoorbeeld" = "eenvoudige vorm"%}
... {% Etiket INP '} Tik 'n waarde: {% endlabel%}
... {% Text "INP"%}
... {% Endform%}
... '' ')
>>> Druk tpl.render ()


& Nbsp; Tik 'n waarde:
& Nbsp;

& Nbsp;>>> Druk tpl.render (form_vars = {'n voorbeeld ': {' INP ': 123}})

& Nbsp; Tik 'n waarde:
& Nbsp;

In die bogenoemde voorbeeld, sien ons 'n eenvoudige sjabloon voorwerp wat geskep word dat een vorm bevat. Wanneer gelewer sonder enige argumente, is dit eenvoudig druk die vorm met geen inligting ingevul. Wanneer die spesiale "form_vars" dict verskaf word, dit vul enige waardes wat dit kan vind in die vorm as wat dit genereer nie.
Jy kan ook sien die lang, lelike id eienskappe wat gestel is. Dit is nodig sodat FormPump kan assosieer etikette met insette; FormPump maak hulle soos dit gaan. Jy is vry om dit self te ignoreer deur eenvoudig die verskaffing van jou eie id en vir eienskappe op jou elemente. FormPump hou outomaties spoor van die etikette en insette in die sjabloon en probeer om 'n intelligente assosieer hulle met mekaar nie, maar slegs wanneer die insette het nie ID's gespesifiseer, en etikette nie vir is gespesifiseer.
Forms
FormPump vul vorms deur te kyk na insetwaardes in aangewese sjabloon veranderlike. Hierdie veranderlike standaard te form_vars maar kan deur die oprigting van die values_dict_name eiendom van die uitbreiding ingestel word (vir Jinja2, stel dit op die omgewing: env.values_dict_name).
form_vars is 'n woordeboek van woordeboeke. Boonste vlak sleutels die vorm konteks identifiseerders, verduidelik in meer detail hieronder. Elke vorm konteks verwys na 'n ander woordeboek wat is 'n eenvoudige stel van die belangrikste waarde pare wat FormPump gebruik waardes te soek vir die vorm. Die sleutels verwys na die insette naam. Die waardes word geword het van die waarde kenmerk * ​​vir die insette, omgeskakel na unicode.
* Let wel: Vir insette soos 'n radio knoppie, waar die waardes voorafbepaalde, FormPump gebruik die form_vars waarde te bepaal watter radio knoppie te preselect, indien enige.
Vorm Konteks se
FormPump kan jy meer as een vorm in jou sjabloon te hê. Elke vorm kan oorvleuel insette name. Die vorms word disambiguated deur wat FormPump noem die vorm konteks. Die voorbeeld hierbo toon 'n vorm konteks stel na "voorbeeld" - dit is die string wat onmiddellik volg die vorm navraag. Die string moet 'n konstante string, nie 'n veranderlike of ander dinamiese uitdrukking, (daar is 'n manier om hierdie hieronder gedek) wees.
'N Eenvoudige voorbeeld moet hul gebruik te verduidelik:
& Nbsp;>>> TPL = env.from_string ('' '
... {% Vorm "'n"%}
... {% Text "INP"%}
... {% Endform%}
... {% Vorm "b"%}
... {% Text "INP"%}
... {% Endform%}
... '' ')
& Nbsp;>>> Druk tpl.render (form_vars = {'n ': {' INP ':' A '},' b ': {' INP ':' B '}})

& Nbsp;


& Nbsp;

Vorm kontekste eintlik dien 'n dubbele doel. 'N gemeenskaplike hindernis met die feit dat verskeie HTML vorms op 'n enkele bladsy is moeilik kan wees om te bepaal watter vorm ingedien is indien beide vorms het dieselfde optrede kenmerk. Vorm kontekste kan help.
Met die standaard instellings, soos tot dusver, hulle het geen direkte invloed op die opbrengs. Maar, as jy die form_name_key eiendom op die uitbreiding, FormPump sal outomaties voeg 'n versteekte insette wat die vorm konteks waarde soos sy naam, (vir Jinja2, stel dit op die omgewing) bevat.
& Nbsp;>>> env.form_name_key = '__'
& Nbsp;>>> tpl = env.from_string ('' '
... {% Vorm "voorbeeld"%}
... {% Endform%}
... '' ')
& Nbsp;>>> Druk tpl.render ()


Die voorgelê waarde kan dan gebruik word om die ingehandigde vorm maklik identifiseer op die bediener.
Maar, met behulp van hierdie funksie bring een komplikasie! Sê ons wil hê een vorm herhaal verskeie kere op 'n enkele bladsy. Met elke herhaling van die vorm, wil ons die veranderlikes wat gevulde is om te verander. Byvoorbeeld, sê jy het 'n lys van mense in 'n maatskappy, en jy wil in staat wees om te wysig en stuur updates met die telefoon nommer vir elke een. Jy wil dus dieselfde formname terug voorgelê aan die bediener, maar 'n _different vorm konteks toe in die vorm in te vul. Tik die form_ctx funksie, wat toelaat dat jy die konteks waar FormPump opkyk waardes van die vlieg te verander. Die form_ctx funksie kan jy ook dinamiese konteks name aan jou vorms, wat die standaard vorm funksie nie toe te ken:
& Nbsp;>>> tpl = env.from_string ('' '
...

    ... {% Vir iemand in mense%}
    ...

  • ... {% Vorm "persoon"%}
    ... {% Form_ctx "persoon.% D"% persoon ['ID']}%
    ... {% Verborge "id"%}
    ... {% Etiket "phone"%} {{persoon ['naam']}} {% endlabel%}
    ... {% Text "selfoon"%}
    ... {% Endform%}
    ...

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

... '' ')
& Nbsp;>>> mense = [{"id": 1, 'naam': 'Bill B. "," telefoon ":" 555-123-4567'},
... {'ID': 2, 'naam': 'Chris C.', 'telefoon': '555-7654-321'}]
& Nbsp;>>> Druk tpl.render (mense = mense,
... Form_vars = dict ([('n persoon.% D '% persoon [' ID '], persoon) vir persoon in mense]))

    & Nbsp;

  • & Nbsp;

    & Nbsp;
    & Nbsp; Handves B.
    & Nbsp;
    & Nbsp;
    & Nbsp;

  • & Nbsp;

  • & Nbsp;

    & Nbsp;
    & Nbsp; Chris C.
    & Nbsp;
    & Nbsp;
    & Nbsp;

As jy bo kyk, sal jy sien twee vorme, albei met dieselfde vorm naam, maar met verskillende waardes gevul in te danke aan die dinamiese form_ctx. Die form_ctx funksie affekteer alle insette wat nadat dit kom. Jy kan spesifiseer verskeie form_ctx's in 'n vorm as jy wil, elkeen vooruit te loop die vorige. Let egter daarop dat sy stilisties verwarrend kan wees.
Form Foute
Vorm foute werk baie soos form_vars. Jy gebruik die fout funksie in jou sjabloon aan te dui waar foute moet gaan, en dan spesifiseer form_error as 'n sub-woordeboek van woordeboeke met enige en alle fout boodskappe wat jy wil in te stel. Enige fout wat nie 'n ooreenstemmende waarde in die vind form_error lookup sal gelaat word uit die finale uitset.
>>> Tpl = env.from_string ('' '
... {% Vorm "voorbeeld"%}
... {% Fout "field_A"%}
... {% Text "field_A"%}
... {% Fout "field_B"%}
... {% Text "field_B"%}
... {% Endform%}
... '' ')
>>> Druk tpl.render (form_vars = {"voorbeeld": {"field_A": "Val A", "field_B": "Val B"}},
... Form_errors = {"voorbeeld": {"field_B": "fout B"}})

& Nbsp;
& Nbsp;
Fout B

& Nbsp;

Let ook op dat enige insette wat 'n fout sal die "fout" css klas bygevoeg aan hulle.
Fout boodskappe by verstek is uitset soos hierbo & mdash; in 'n div met die klas "fout boodskap". Jy kan jou eie fout boodskap styl spesifiseer deur die toeken van funksies aan sy error_renderers woordeboek en dan spesifiseer die vertoning kenmerk in die sjabloon {% fout vertoning = "persoonlike"%}. . Deur verstek, alle foute gebruik om die "default" vertoning wat jy is vry om te dwing

Vereistes :

  • Python

Ander sagteware ontwikkelaar Dave Mankoff

htmlmin
htmlmin

12 May 15

Kommentaar te FormPump

Kommentaar nie gevind
Kommentaar te lewer
Draai op die foto!