FormPump

Yazılım ekran görüntüsü:
FormPump
Yazılım detaylar:
Versiyon: 0.1.7
Qayıt: 20 Feb 15
Geliştirici: Dave Mankoff
Lisans: Ücretsiz
Popülerlik: 17

Rating: nan/5 (Total Votes: 0)

FormPump size temiz HTML formları doldurmak için izin popüler çiftleşmiş motorları ile entegre bir Python aracıdır.
FormPump ile çalışmak için HTML formları çok daha kolay hale getirmek için yazılı Python şablon motoru uzantıları topluluğudur. Doğrudan, senin girişlerine değerleri doldurarak sizin girişlere etiketlerin uygulanması ve hızlı bir şekilde hata iletileri görüntüleniyor ilgili problemleri ele almaktadır. Bu mevcut koduna uyum için hızlı bir sezgisel ve doğal bir şekilde formları öğeleri oluşturmak için şablona içine etiketleri / fonksiyonları bir dizi getirerek yapar.
Şu anda, FormPump jinja2 destekler.
Bir Tanıtım [Jinja2] Örnek
(Bu README gösterilen örnekler jinja2 gösterilmiştir. Diğer çiftleşmiş dilleri benzer bir işleve sahip olacaktır.)
>>> Formpump ithalat JinjaPump gelen
>>> Jinja2 ithalat Çevre gelen
>>> Env = Çevre (uzantıları = [JinjaPump])
>>> Tpl = env.from_string (''
... {% Formu "örnek" class = "basit formu"%}
{% Endlabel%}: {...% etiketi 'inp'} bir değer girin
... {% Metni "inp"%}
... {% Endform%}
... '' ')
>>> Print tpl.render ()


& Nbsp; bir değer girin <= "6GiCLEkUToekNy8xuN8AnT2esddU8MG8" için etiket>:
& Nbsp;

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

& Nbsp; bir değer girin <= "pnBP2IoFmfExTQdDZe44GKsFN6wrVOPu" için etiket>:
& Nbsp;

Yukarıdaki örnekte, basit bir şablon nesnesi bir form içeren oluşturulan bkz. Herhangi bir argüman olmadan render zaman, sadece doldurulmuş hiçbir bilgi formu yazdırır. Özel "form_vars" dict temin edildiğinde, o onu üretir gibi forma bulabileceğiniz herhangi bir değeri doldurur.
Ayrıca kuruldu uzun, çirkin id niteliklerini fark edebilirsiniz. FormPump girişli etiketleri ilişkilendirmek böylece bu gereklidir; Gider olarak FormPump onları yapar. Siz sadece kendi id sağlayarak ve unsurlar üzerinde öznitelikler için bunları kendiniz geçersiz kılmak için ücretsizdir. FormPump şablona otomatik olarak etiket ve girdilerin izler ve akıllıca birbirleri ile ilişkilendirmek için çalışır, ancak girişler yok, sadece id belirtilmiş, ve etiketler belirtilen oluyor için yok.
Formlar Dolum
FormPump belirlenen şablon değişkeni giriş değerleri bakarak formları doldurur. Bu değişken form_vars varsayılan, ancak uzantısı values_dict_name özelliğini ayarlayarak konfigüre edilebilir (: env.values_dict_name jinja2 için, çevreye bu set).
form_vars sözlükler bir sözlük olduğunu. Üst düzey tuşları formu bağlam tanımlayıcılardır, aşağıda daha ayrıntılı olarak açıklanmıştır. Her form bağlam FormPump formu değerlerini arama için kullandığı anahtar-değer çiftleri basit bir dizi başka sözlüğe eder. tuşları giriş adına bakın. değerler unicode dönüştürülür, giriş için * değer nitelik haline gelir.
* Not: değerler önceden belirlenmiş olan bir radyo düğmesi gibi girişler için, FormPump varsa, preselect hangi radyo düğmesi belirlemek için form_vars değerini kullanır.
Form Bağlam en
FormPump Eğer şablonda birden fazla formu olmasına izin verir. Her formu üst üste giriş adları olabilir. formlar FormPump formu bağlam dediği tarafından belirginleştirilmiş edilir. Yukarıdaki örnek "Örneğin" ayarlanmış bir formu içeriği gösterir - bu formu anahtar kelime hemen ardından dizedir. dize dize sabiti, bir değişken veya diğer dinamik ifade, (aşağıda kaplı bu çevrede bir yolu var) olması gerekir.
Basit bir örnek kullanımlarını açıklamak gerekir:
& Nbsp;>>> tpl = env.from_string (''
... {% Formu "bir"%}
... {% Metni "inp"%}
... {% Endform%}
... {% Formu "b",%}
... {% Metni "inp"%}
... {% Endform%}
... '' ')
& Nbsp;>>> print tpl.render (form_vars = {'a': {'inp': 'A'}, 'b': {'inp': 'B'}})

& Nbsp;


& Nbsp;

Form bağlamları aslında ikili bir amaca hizmet eder. Tek bir sayfada birden HTML formları sahip bir ortak engel her iki formları aynı eylem niteliği varsa sunulmuş olan formu belirlemek zor olabilir olduğunu. Form bağlamları yardımcı olabilir.
Bugüne kadar gösterildiği gibi varsayılan ayarları ile, onlar çıktı üzerinde doğrudan etkisi vardır. Eğer uzantısı form_name_key özelliğini ayarlamak Ancak, FormPump otomatik (çevreye bu set jinja2 için,) kendi adıyla formu içerik değeri içeren gizli bir giriş ekler.
& Nbsp;>>> env.form_name_key = '__'
& Nbsp;>>> tpl = env.from_string (''
... {% Formu "örnek"%}
... {% Endform%}
... '' ')
& Nbsp;>>> print tpl.render ()


göndereceğimiz değeri daha sonra kolayca sunucuda gönderilen formu tanımlamak için kullanılır.
Ama, bu özelliği kullanarak bir daha komplikasyon getirir! Biz bir formu tek bir sayfada birden çok kez tekrarlanan istiyorum söylüyorlar. Formun her tekrarı ile, doldurulmuş olan değişkenleri değiştirmek istiyorum. Örneğin, bir şirketin insan bir listesi var demek, ve düzenlemek ve her biri için telefon numarasına güncellemeleri göndermek mümkün olmak istiyorum. Formu doldururken Bu nedenle sunucuya geri gönderilen aynı FormName, ama bir _different formu bağlamı istiyorum. Eğer FormPump anında değerleri arar bağlamı değiştirmenizi sağlar form_ctx işlevi, girin. form_ctx fonksiyonu da standart form fonksiyonu yok senin formları, dinamik içerik isimleri atamak için izin verir:
& Nbsp;>>> tpl = env.from_string (''
...

    ... {Insanların% kişi için%}
    ...

  • ... {% Formu "kişi"%}
    ... {% Form_ctx "kişi.% D"% kişi ['id']%}
    ... {% Gizli "id"%}
    ... {% Etiketi "telefon"%} {{kişinin ['isim']}} {% endlabel%}
    ... {% Metni "telefon"%}
    ... {% Endform%}
    ...

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

... '' ')
& Nbsp;>>> = [insanlar {'id': 1, 'isim': 'Bill B.', 'telefon': '555-123-4567'},
... {'Id': 2, 'isim': 'Chris C', 'telefon': '555-7654-321'}]
& Nbsp;>>> print tpl.render (insanlar = insanlar,
... Form_vars = dict ([('kişi.% D'% kişi ['id'], insanların kişi için kişi)]))

    & Nbsp;

  • & Nbsp;

    & Nbsp;
    & Nbsp; <= "weiOPnfowyRnF2tKTM9dGCVTUjmS7NZM" için etiket> Bill B.
    & Nbsp;
    & Nbsp;

    & Nbsp;

  • & Nbsp;

  • & Nbsp;

    & Nbsp;
    & Nbsp; <= "2EKjdwWOY1GdtCVK20dtZYAqBSs4Bo9i" için etiket> Chris C
    & Nbsp;
    & Nbsp;

    & Nbsp;

Yukarıdaki bakarsanız, aynı form adı ile iki formları, hem görmek, ancak dinamik form_ctx sayesinde doldurulmuş farklı değerlerle olacaktır. form_ctx fonksiyon ondan sonra gelen tüm girdileri etkiler. İsterseniz her biri bir önceki ön-empting, bir formda birden form_ctx 's belirtebilirsiniz. Onun biçimsel kafa karıştırıcı olabilir ki Ancak unutmayın.
Form Hatalar
Form hataları çok form_vars gibi çalışır. Sen. In karşılık gelen bir değer bulmuyor herhangi bir hata koymak istiyorum hatalar gitmeli nereye gösterir ve daha sonra herhangi birini içeren sözlükler ve tüm hata mesajlarının bir iç içe sözlük olarak Form_Error belirtmek için şablonunda hata işlevini kullanın Form_Error arama son çıkış dışında bırakılacaktır.
>>> Tpl = env.from_string (''
... {% Formu "örnek"%}
... {% Hatası "field_A"%}
... {% Metni "field_A"%}
... {% Hatası "field_B"%}
... {% Metni "field_B"%}
... {% Endform%}
... '' ')
>>> Print tpl.render (form_vars = {"örnek": {"field_A": "val A", "field_B": "val B"}},
... Form_errors = {"örnek": {"field_B": "hata B"}})

& Nbsp;
& Nbsp;
hata B

& Nbsp;

Ayrıca, bir hata bulmak herhangi bir giriş kendilerine eklenen "hata" css sınıfı olacak.
Varsayılan olarak hata mesajları yukarıdaki & mdash gibi çıkıştır; sınıf "hata iletisiyle-" ile bir div. {% Hata render = "özel"%}: Bunu error_renderers sözlüğe fonksiyonları atama ve daha sonra şablonda render niteliğini belirterek kendi hata mesajı stili belirtebilirsiniz. . Varsayılan olarak, tüm hataları geçersiz kılmak için ücretsiz "varsayılan" oluşturucu kullanmak

Gereksinimler :

  • Python

Geliştirici Diğer yazılım Dave Mankoff

htmlmin
htmlmin

12 May 15

Yorumlar FormPump

Yorum Bulunamadı
Yorum eklemek
Görüntülerde açın!