FormPump on Python työkalu, joka integroituu suosittu sivupohjamoottori moottorit, jolloin voit siististi täyttää HTML lomakkeita.
FormPump on kokoelma Python mallin moottori laajennukset kirjoitettu tehdä HTML lomakkeet paljon helpompi työskennellä. Se paljastaa suoraan liittyviä ongelmia täyttämällä arvot tuotantopanosten, soveltamalla tarrat tuotantopanosten ja näytetään virheilmoitukset nopea tapa. Se tekee tämän tuomalla tunnisteet / toiminnot omaan malliin että luoda lomakkeita elementtejä intuitiivinen ja luonnollinen tapa, joka on nopea sopeutumaan olemassa oleviin koodin.
Tällä hetkellä, FormPump tukee Jinja2.
Alustavat [Jinja2] Esimerkki
(Esimerkit esitetään tässä README esitetään Jinja2. Muut sivupohjamoottori kielet ovat samanlaiset käyttöä.)
>>> Alkaen formpump tuonti JinjaPump
>>> Alkaen jinja2 tuonti Ympäristö
>>> ENV = Ympäristö (laajennukset = [JinjaPump])
>>> TPL = env.from_string ('' '
... {% Muodossa "esimerkiksi" class = "yksinkertainen muoto"%}
... {% Label "inp"} Anna arvo: {% endlabel%}
... {% Teksti "inp"%}
... {% Endform%}
... '' ')
>>> Print tpl.render ()
& Nbsp;>>> Tulosta tpl.render (form_vars = {example: {"inp": 123}})
Yllä olevassa esimerkissä näemme yksinkertainen malliobjekti syntyy, joka sisältää yhden lomakkeen. Kun sulatettu ilman perusteluja, se yksinkertaisesti tulostaa lomakkeen tietoja ei täytetty. Kun erityinen "form_vars" dict annetaan, se täyttää kaikki arvot se löytää muotoon kuin se luo sitä.
Saatat myös huomata pitkä, ruma id attribuutteja, jotka oli asetettu. Niitä tarvitaan, jotta FormPump voi liittää tarroja tuloa; FormPump tekee niistä ylös kuin se menee. Voit vapaasti ohittaa niitä itse yksinkertaisesti järjestämällä oman id ja attribuutteja teidän elementtejä. FormPump pitää automaattisesti kirjaa tarrat ja tuotantopanosten mallin ja yrittää älykkäästi liittää ne toisiinsa, mutta vain silloin, kun tulot eivät ole id ilmoittama, ja tarroja ei ole varten ilmoittama.
Lomakkeiden täyttäminen
FormPump täyttää lomakkeita katsomalla syötearvot nimetyissä malliin muuttuja. Oletusarvona on form_vars mutta voidaan konfiguroida asettamalla values_dict_name omaisuutta laajennus (varten Jinja2, aseta tämä ympäristöön: env.values_dict_name).
form_vars on sanakirja sanakirjoja. Huipputason avaimet ovat muotoa yhteydessä tunnisteet, selostetaan tarkemmin jäljempänä. Kukin lomake yhteydessä viittaa toiseen sanakirja, joka on yksinkertainen joukko avainarvoparisi että FormPump käyttää lookup lomakkeen arvoja. Avaimet viittaavat tulonimi. Arvot tulevat arvon ominaisuuden * varten tulon, muunnetaan Unicode.
* Huomautus: tuotantopanosten, kuten valintanappi, jos arvot ovat ennalta, FormPump käyttää form_vars arvo mitkä valintanappi valita ennalta, jos mitään.
Lomake Konteksti: n
FormPump voit olla enemmän kuin yksi oman mallin. Yhdellä lomakkeella voi olla päällekkäisiä syöttää nimiä. Lomakkeet yksikäsitteistetty mitä FormPump pyytää lomakkeen yhteydessä. Esimerkiksi edellä osoittaa lomakkeen yhteydessä asetettu "esimerkki" - se on merkkijono heti lomakkeen avainsanan. Merkkijono on vakio merkkijono, ei muuttuja tai muita dynaamisia ilmaisu, (siellä on tapa kiertää tämä kattaa alla).
Yksinkertainen esimerkki tulee selventää niiden käyttöä:
& Nbsp;>>> TPL = env.from_string ('' '
... {% Muodossa ""%}
... {% Teksti "inp"%}
... {% Endform%}
... {% Muodossa "b"%}
... {% Teksti "inp"%}
... {% Endform%}
... '' ')
& Nbsp;>>> Tulosta tpl.render (form_vars = {'': {"InP ':' '},' b ': {" InP': 'B'}})
Kunto yhteyksissä todella palvella kahta tarkoitusta. Yhteinen este kanssa ottaa useita HTML lomakkeet yhdellä sivulla on, että voi olla vaikea määrittää, mitkä lomakkeen toimitti jos molemmat muodot ovat samat toimet määrite. Lomake yhteyksissä voi auttaa.
Kun oletusasetukset, kuten tähän asti, niillä ei ole suoraa vaikutusta tuotoksen. Kuitenkin, jos olet asettanut form_name_key kiinteistön laajennus, FormPump lisää automaattisesti piilotettu tulo, joka sisältää lomakkeen yhteydessä arvoa nimensä, (varten Jinja2, aseta tämä ympäristöön).
& Nbsp;>>> env.form_name_key = '__'
& Nbsp;>>> TPL = env.from_string ('' '
... {% Muodossa "esimerkiksi"%}
... {% Endform%}
... '' ')
& Nbsp;>>> Tulosta tpl.render ()
Toimitettu arvo voidaan sitten käyttää helposti tunnistaa toimitti lomakkeen palvelimelle.
Mutta tätä ominaisuutta käyttäen tuo yksi komplikaatio! Sano haluamme olla yksi muoto toistetaan useita kertoja yhdelle sivulle. Jokaisen toistaminen muodossa, haluamme muuttaa muuttujat, joita esitäytetyt. Oletetaan esimerkiksi, että sinulla on luettelo ihmisiä yritys, ja haluat pystyä muokata ja toimittaa päivitykset puhelinnumeron kullekin. Et siis halua samaa formname toimitettu takaisin palvelimelle, mutta _different lomakkeen yhteydessä, kun lomakkeen täyttämistä. Anna form_ctx toiminto, jonka avulla voit muuttaa tilanteessa, jossa FormPump etsii arvot lennossa. Form_ctx toiminnon avulla voit määrittää dynaamisen yhteydessä nimiä lomakkeet, jonka vakiomalli toiminto ei:
& Nbsp;>>> TPL = env.from_string ('' '
...
... {% Muotoa "henkilö"%}
... {% Form_ctx "henkilö.% D"% henkilön ['id']%}
... {% Piilotettu "id"%}
... {% Label "puhelin"%} {{henkilön ['nimi']}} {% endlabel%}
... {% Teksti "puhelin"%}
... {% Endform%}
...
... {% Ja henkilö ihmisiin%}
...
... {% EndFor%}
...
... '' ')
& Nbsp;>>> ihmiset = [{id: 1, "nimi": "Bill B. ',' puhelin ':' 555-123-4567"},
... {Id: 2, 'nimi': 'Chris C.', 'puhelin': '555-7654-321 "}]
& Nbsp;>>> Tulosta tpl.render (ihmiset = henkilöä,
... Form_vars = dict ([('henkilö.% D'% henkilön ['id'], henkilö) ja henkilön ihmiset]))
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp;
Jos katsot edellä, näet kaksi muotoja, sekä samalla lomakkeella nimi, mutta eri arvot täytetään ansiosta dynaaminen form_ctx. Form_ctx toiminto vaikuttaa kaikkiin tulot, jotka tulevat sen jälkeen. Voit määrittää useita form_ctx n muodossa, jos haluat, jokainen ennakoimatta edellinen. Huomaa kuitenkin, että hänen voi tulla tyylillisesti sekava.
Form virheet
Kunto virheet toimivat aivan kuten form_vars. Käytät virhefunktio oman mallin, missä virheet pitäisi mennä, ja määritä sitten form_error kuin sisäkkäisiä sanakirja sanakirjoja sisältävät kaikki mahdolliset virheilmoitukset haluat laittaa. Jokainen virhe, joka ei löydä vastaava arvo form_error lookup jää pois lopullinen tuotos.
>>> TPL = env.from_string ('' '
... {% Muodossa "esimerkiksi"%}
... {% Virhe "field_A"%}
... {% Teksti "field_A"%}
... {% Virhe "field_B"%}
... {% Teksti "field_B"%}
... {% Endform%}
... '' ')
>>> Print tpl.render (form_vars = {"esimerkki": {"field_A": "val", "field_B": "val B"}},
... Form_errors = {"esimerkki": {"field_B": "error B"}})
Huomaa myös, että kaikki tulot, jotka löytää virhe on "virhe" css luokan lisätään niihin.
Virheilmoitukset ovat oletusarvoisesti lähtö kuten edellä & ndash; vuonna div class "error-viesti". Voit määrittää oman virheilmoituksen tyyliin määrittämällä toimintoja sen error_renderers sanakirjaan ja sitten määritellään renderer määrite malliin: {% virhe renderer = "custom"%}. Oletuksena kaikki virheet käyttää "default" renderer jotka voit vapaasti ohittaa.
Vaatimukset :
- Python
Kommentteja ei löytynyt