FormPump

Screenshot Software:
FormPump
Szczegóły programowe:
Wersja: 0.1.7
Filmu: 20 Feb 15
Wywoływacz: Dave Mankoff
Licencja: Wolny
Popularność: 5

Rating: nan/5 (Total Votes: 0)

FormPump jest narzędziem Python który integruje się z popularnych silników szablonowych, co pozwala na czysto wypełnianie formularzy HTML.
FormPump to zbiór Python rozszerzeń silnika szablonu napisane, aby formularze HTML znacznie łatwiej pracować. To bezpośrednio porusza problemy związane z wypełnieniem wartości do swoich wejść, stosowania etykiet do wejść i wyświetlanie komunikatów o błędach w szybki sposób. Czyni to poprzez wprowadzenie zestawu tagów / funkcji do szablonu, który tworzyć formy elementów w intuicyjny i naturalny sposób, który jest szybki, aby dostosować się do istniejącego kodu.
Obecnie FormPump obsługuje Jinja2.
Wprowadzenie [Jinja2] Przykład
(Przykłady przedstawione w tej README przedstawiono w Jinja2. Inne języki templating będzie mieć podobne zastosowanie.)
>>> Z formpump importu JinjaPump
>>> Z jinja2 importu Środowiska
>>> Env = Środowisko (rozszerzenia = [JinjaPump])
>>> Tpl = env.from_string ('' '
... {% Form "przykład" class = "prosty formularz"%}
... {% Etykieta "INP '} Wprowadź wartość: {% ENDLABEL%}
... {% Tekst "INP"%}
... {% Endform%}
... '' ')
>>> Tpl.render print ()


& Nbsp;
& Nbsp;

& Nbsp;>>> print tpl.render (form_vars = {"przykładem": {"INP": 123}})

& Nbsp;
& Nbsp;

W powyższym przykładzie widzimy, prosty szablon tworzony obiekt, który zawiera jeden formularz. Gdy renderowane bez argumentów, to po prostu wypisuje formularz bez informacji wypełnione. Kiedy specjalne "form_vars" dict jest, że wypełnia żadnych wartości może znaleźć się w formie, jak to generuje go.
Można również zauważyć, długie, brzydkie atrybuty id, które zostały ustawione. Są one konieczne, aby FormPump może powiązać etykiety z wejść; FormPump czyni je, jak to idzie. Jesteś wolny, aby je zastąpić siebie, po prostu przekazując swój własny identyfikator i atrybutów na swoich elementów. FormPump automatycznie śledzi etykiet i wejść w szablonie i próbuje inteligentnie powiązać je ze sobą, ale tylko wtedy, gdy określone wejścia nie mają identyfikatory i etykiety nie mają na to określony.
Wypełnianie formularzy
FormPump wypełnia formularze, patrząc na wartości wejściowe w wyznaczonej zmiennej szablonu. Domyślną wartością form_vars ale można skonfigurować poprzez ustawienie właściwości values_dict_name rozszerzenia (dla Jinja2, ustawić to na środowisko: env.values_dict_name).
form_vars jest słownika słowników. Klawisze najwyższego poziomu są identyfikatory kontekstowe forma, wyjaśniono bardziej szczegółowo poniżej. Każdy kontekst forma odnosi się do innego słownika, który jest prosty zestaw par klucz-wartość, że FormPump używa do wyszukiwania wartości dla postaci. Przyciski znajdują się nazwa wejścia. Wartości te stają się atrybutem * wartość dla wejścia, w przeliczeniu na Unicode.
* Uwaga: Dla wejść, takich jak przycisk opcji, których wartości są góry, FormPump używa wartości form_vars aby określić, który przycisk radiowy do wstępnego wyboru, jeśli w ogóle.
Kontekst formularza
FormPump pozwala mieć więcej niż jeden formularz w szablonie. Każdy formularz może mieć nakładających nazwy wejściowe. Formularze są ujednoznacznić co FormPump zwraca kontekst formą. Przykład powyżej pokazuje kontekst formularz ustawiony na "przykład" - jest to ciąg bezpośrednio po słowie kluczowym formularza. Łańcuch musi być stała ciąg, a nie zmienną lub inne dynamiczne wyrażenie, (jest odwrotnie to opisane poniżej).
Prosty przykład powinien wyjaśnić ich wykorzystania:
& Nbsp;>>> tpl = env.from_string ('' '
... {Formą% ""%}
... {% Tekst "INP"%}
... {% Endform%}
... {% Form "b"%}
... {% Tekst "INP"%}
... {% Endform%}
... '' ')
& Nbsp;>>> print tpl.render (form_vars = {'' {'INP': ''}, 'b': {"INP ':' B '}})

& Nbsp;


& Nbsp;

Konteksty tworzą rzeczywiście służyć dwóm celom. Wspólne przeszkodą z posiadania wielu formularzy HTML na jednej stronie jest to, że może być trudne do ustalenia, która forma został złożony, jeśli obie formy mają taki sam atrybut działania. Konteksty Formularz może pomóc.
Z domyślnymi ustawieniami, jak pokazano do tej pory, nie mają bezpośredniego wpływu na wyjściu. Jeśli jednak ustawić właściwość form_name_key sprawie rozszerzenia, FormPump automatycznie wstawić ukryte wejście, które zawiera formularz wartość kontekstowe jak jego nazwa, (dla Jinja2, ustaw to na środowisko).
& Nbsp;>>> env.form_name_key = "__"
& Nbsp;>>> tpl = env.from_string ('' '
... {% Form "przykład"%}
... {% Endform%}
... '' ')
& Nbsp;>>> print tpl.render ()


Przedstawiła wartość mogą być następnie wykorzystane do łatwo zidentyfikować przedłożone formularza na serwerze.
Ale, przy użyciu tej funkcji sprowadza się jeszcze jeden komplikacji! Powiedzmy, że chcesz mieć jeden formularz powtarzany wiele razy na jednej stronie. Przy każdym powtórzeniu formularza, chcemy zmienić zmienne, które są wstępnie wypełnionych. Załóżmy, że masz listę osób w firmie, a chcesz mieć możliwość edycji i przesłać aktualizacje do numeru telefonu dla każdej z nich. Możesz więc chcą tego samego formname przekazany z powrotem do serwera, ale _different kontekst formularz przy wypełnianiu formularza. Wprowadź form_ctx funkcję, która pozwala na zmianę kontekstu, gdzie FormPump wygląda się wartości z na bieżąco. Funkcja form_ctx pozwala również przypisywać dynamiczne nazwy kontekstowych do formularzy, których standardowa funkcja formularz nie:
& Nbsp;>>> tpl = env.from_string ('' '
...

    ... {% Na osobę w ludzi%}
    ...

  • ... {% Form "osoba"%}
    ... {% Form_ctx "osoba.% D"% osób ['id']%}
    ... {% Ukryte "id"%}
    ... {% Etykieta "telefon"%} {{osoba ['name']}} {% ENDLABEL%}
    ... {% Tekst "Telefon"%}
    ... {% Endform%}
    ...

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

... '' ')
& Nbsp;>>> ludzie = [{"id": 1, 'name': 'Bill B. "," telefon ":" 555-123-4567 "},
... {"Id": 2, 'name': 'Chris C "," telefon ":" 555-7654-321 "}]
& Nbsp;>>> print tpl.render (ludzie = ludzie,
... Form_vars = dict ([("osoba.% D '% osób [' id '], osoba) dla osoby w ludzi]))

    & Nbsp;

  • & Nbsp;

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

    & Nbsp;

  • & Nbsp;

  • & Nbsp;

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

    & Nbsp;

Jeśli spojrzeć wyżej, widać dwie formy, zarówno o tej samej nazwie postaci, ale z różnymi wartościami wypełnione dzięki dynamicznemu form_ctx. Funkcja form_ctx wpływa na wszystkie wejścia, które przychodzą po niego. Można określić wiele form_ctx w formie, jeśli chcesz, każdy przesądzając poprzednie. Należy jednak pamiętać, że może stać się jego stylistycznie mylące.
Błędy Formularz
Błędy Formularz działa podobnie jak form_vars. Korzystając z funkcji błędu w szablonie, aby wskazać, gdzie błędy powinny iść, a następnie określić form_error jako zagnieżdżone słownika słowników zawierających dowolne i wszystkie komunikaty o błędach, które chcesz umieścić w. Każdy błąd, który nie znaleźć odpowiednią wartość w form_error wyszukiwania zostaną wykluczone z ostatecznego wyjścia.
>>> Tpl = env.from_string ('' '
... {% Form "przykład"%}
... {% Błędu "field_A"%}
... {% Tekst "field_A"%}
... {% Błędu "field_B"%}
... {% Tekst "field_B"%}
... {% Endform%}
... '' ')
>>> Print tpl.render (form_vars = {"przykład": {"field_A": "val", "field_B": "val B"}},
... Form_errors = {"przykład": {"field_B": "Błąd B"}})

& Nbsp;
& Nbsp;
Błąd B

& Nbsp;

Należy również zauważyć, że wszelkie nakłady, które znaleźliśmy błąd będzie miał klasę "błąd" css dodaną do nich.
Komunikaty o błędach są wyświetlane domyślnie jak wyżej & ndash; w div z klasy "komunikat_o_błędzie". Możesz określić własny komunikat o błędzie styl poprzez przypisanie funkcji do swojego słownika error_renderers a następnie określając atrybut renderujący w szablonie: {% błędu renderujący = "custom"%}. . Domyślnie wszystkie błędy użyć "domyślny" renderujący, które użytkownik może dowolnie zastąpić

Wymagania :

  • Python

Inne programy z deweloperem Dave Mankoff

htmlmin
htmlmin

12 May 15

Komentarze do FormPump

Komentarze nie znaleziono
Dodaj komentarz
Włącz zdjęć!