FormPump siz temiz HTML formaları doldurmaq üçün imkan verir, məşhur layoutuna mühərrikləri ilə inteqrasiya Python vasitədir.
FormPump ilə işləmək üçün HTML formaları daha asan etmək üçün yazılı Python şablon mühərrik uzantıları toplusudur. Bu, birbaşa giriş daxil dəyərlər doldurulması sizin giriş yazıları tətbiq və sürətli bir şəkildə səhv messages keçirmək ilə bağlı problemlər tackles. Bu mövcud kodu daxil adaptasiya tez bir intuitiv və təbii şəkildə formaları elementləri yaratmaq şablon daxil tags / funksiyaları bir sıra təqdim bu yoxdur.
Hazırda FormPump Jinja2 dəstəkləyir.
An giriş [Jinja2] Məsələn
(Bu README göstərilən nümunələr Jinja2 göstərilir. Digər layoutuna languages oxşar istifadə olacaq.)
>>> Formpump idxal JinjaPump dən
>>> Jinja2 idxal Ətraf dən
>>> ENV = Environment (uzantıları = [JinjaPump])
>>> TPL = env.from_string (''
... {% Forması "nümunə" class = "sadə formada"%}
{% Endlabel%}: ... {% etiket Inp '} bir dəyər daxil edin
... {% Text "Inp"%}
... {% Endform%}
... '')
>>> Çap tpl.render ()
& Nbsp;>>> print tpl.render (form_vars = {'Məsələn: {' Inp: 123}})
Yuxarıdakı misalda, biz bir sadə şablon obyekt bir formada ehtiva yaradılır görürük. Hər hansı bir dəlilləri olmadan göstərilən zaman, sadəcə doldurulmuş heç bir informasiya formu çap edir. Xüsusi "form_vars" dict təmin edilir, o, onu yaradır kimi formaya tapa bilərsiniz hər hansı dəyərlər doldurur.
Siz həmçinin müəyyən edilmişdir uzun, çirkin id atributları bilərsiniz. FormPump giriş yazıları şərik bilər ki, bu tələb olunur; Gedir kimi FormPump onları təşkil edir. Siz sadəcə öz id təmin etməklə və elementləri atributları onlara özünüzü yalnış pulsuz. FormPump avtomatik şablon yazıları və giriş tutar və ağıllı bir-biri ilə əlaqələndirmək üçün çalışır, lakin giriş yoxdur, yalnız id üzrə müəyyən, və yazıları müəyyən edir üçün yoxdur.
formaları doldurulması
FormPump təyin şablon dəyişən giriş dəyərlər ararken formaları doldurur. Bu dəyişən form_vars üçün u mənim deyil, uzatma values_dict_name əmlak qəbulu ilə konfiqurasiya edilə bilər (env.values_dict_name Jinja2 üçün, ətraf mühitə bu müəyyən).
form_vars lakin Dil hər bir bir lüğətdir. Top səviyyəli düymələri forma kontekstində tanımlayıcıları var, aşağıda daha ətraflı izah etdi. Hər bir forma kontekstində FormPump forma üçün dəyərlər Sistemi üçün istifadə əsas dəyər cüt sadə set başqa bir lüğət aiddir. düymələri daxil adı baxın. dəyərləri Unicode çevrilir, giriş üçün * dəyəri atributu olur.
* Qeyd: dəyərlər müəyyən edilir radio düyməsini kimi giriş, FormPump əgər preselect üçün radio düyməsini müəyyən etmək üçün form_vars dəyər istifadə edir.
Form Context üzrə
FormPump sizin şablon çox bir forması üçün imkan verir. Hər bir forma üst-üstə daxil adları ola bilər. formaları FormPump forma kontekstində çağırır nə disambiguated olunur. Yuxarıdakı misal "Məsələn" üçün müəyyən bir forma kontekstində göstərir - bu forma söz sonra dərhal simli edir. string sabit simli deyil, dəyişkən və ya digər dinamik ifadə, (aşağıda əhatə bu ətrafında bir yol var) olmalıdır.
A sadə misal onların istifadə aydınlaşdırmaq lazımdır:
& Nbsp;>>> TPL = env.from_string (''
... {% Forması "a"%}
... {% Text "Inp"%}
... {% Endform%}
... {% Forması "b"%}
... {% Text "Inp"%}
... {% Endform%}
... '')
& Nbsp;>>> print tpl.render (form_vars = {'a' {'Inp:' A '},' b '{' Inp: 'B'}})
Form kontekstlərdə həqiqətən ikili məqsədə xidmət edir. Bir səhifə birdən çox HTML formaları olan ümumi maneə hər iki formaları eyni fəaliyyət atributu varsa təqdim etdiyi formada müəyyən etmək çətin ola bilər. Form kontekstlərdə kömək edə bilər.
Indiyədək göstərildiyi kimi u mənim ayarları ilə, onlar çıxış birbaşa təsiri var. Siz uzadılması form_name_key əmlak əgər Lakin, FormPump avtomatik olaraq (ətraf mühitə bu müəyyən Jinja2 üçün) onun adı kimi forma kontekstində dəyəri olan bir gizli giriş daxil olacaq.
& Nbsp;>>> env.form_name_key = '__ "
& Nbsp;>>> TPL = env.from_string (''
... {% Forması "nümunə"%}
... {% Endform%}
... '')
& Nbsp;>>> print tpl.render ()
təqdim dəyər sonra asanlıqla server təqdim forma müəyyən etmək üçün istifadə edilə bilər.
Lakin, bu xüsusiyyət istifadə edərək, bir daha mürəkkəbliyi gətirir! Biz bir forma bir sayfada neçə dəfə təkrar etmək istəyirsiniz. Şəklində hər təkrar ilə biz prefilled ki, dəyişənlərin dəyişdirmək istəyirik. Məsələn, bir şirkət insanların bir siyahısı var demək və redaktə və hər biri üçün telefon nömrəsi yenilikləri təqdim etmək istəyirəm. Formasını doldurmaqla zaman buna görə də server geri təqdim eyni formname, lakin _different forması kontekstində istəyirəm. Siz FormPump Tez dəyərlər görünür kontekstində dəyişdirmək üçün imkan verir form_ctx funksiyası daxil edin. form_ctx funksiyası standart forma funksiyası deyil formaları, dinamik kontekstində adları təyin etmək üçün imkan verir:
& Nbsp;>>> TPL = env.from_string (''
...
... {% Forması "insan"%}
... {% Form_ctx "şəxs.% D"% şəxs ['id']%}
... {% Gizli "id"%}
... {% Etiket "telefon"%} {{şəxs ['adı']}} {% endlabel%}
... {% Text "telefon"%}
... {% Endform%}
...
... {Insanlar% şəxs üçün%}
...
... {% Endfor%}
...
... '')
& Nbsp;>>> = [insanlar {'id: 1,' name ':' Bill B. ',' telefon: 555-123-4567 '}
... {'Id: 2' adı: "Chris C. ',' telefon ':' 555-7654-321 '}]
& Nbsp;>>> print tpl.render (insanlar = insanların,
... Form_vars = dict ([(şəxs.% D '% şəxs [' id '], insanların şəxs üçün şəxs)]))
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp;
Yuxarıdakı baxsaq, eyni forma adı ilə iki forma, həm də görmək, lakin dinamik form_ctx sayəsində dolu müxtəlif dəyərləri ilə olacaq. form_ctx funksiyası sonra gələn bütün giriş təsir göstərir. Əgər istəyirsinizsə, hər bir əvvəlki pre-empting, şəklində çox form_ctx nin daxil edə bilərsiniz. Onun stylistically confusing ola bilər, lakin unutmayın.
Form səhvlər
Form səhvlər çox form_vars kimi çalışır. Siz etmişdir. Müvafiq dəyər tapmır hər hansı bir səhv qoymaq istədiyiniz səhvlər getmək harada göstərir, və sonra hər hansı bir olan lüğətlər və bütün səhv bir nested lüğət kimi form_error müəyyən etmək üçün şablon səhv funksiyası istifadə form_error axtarış finala çıxdı həyata qalacaq.
>>> TPL = env.from_string (''
... {% Forması "nümunə"%}
... {% Error "field_A"%}
... {% Text "field_A"%}
... {% Error "field_B"%}
... {% Text "field_B"%}
... {% Endform%}
... '')
>>> Çap tpl.render (form_vars = {"nümunə": {"field_A": "val A", "field_B": "val B"}},
... Form_errors = {"nümunə": {"field_B": "səhv B"}})
Qeyd də bir səhv tapmaq hər hansı bir giriş onlara əlavə "səhv" css sinif var ki.
Default Error mesajları yuxarıda & mdash kimi çıxış edir; class "səhv mesajı" ilə bir div. {% Səhv Renderer = "xüsusi"%}: Siz error_renderers lüğət funksiyaları təyin və sonra şablon Renderer atributu ifadə edərək, öz səhv mesaj stil daxil edə bilərsiniz. . Mənim cari olaraq, bütün səhvlər siz yalnış pulsuz "default" Renderer istifadə
tələblər
- Python
Şərhlər tapılmadı