PDF-Version - freiesMagazin
PDF-Version - freiesMagazin
PDF-Version - freiesMagazin
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Weitere Funktionen<br />
Fungiform bietet natürlich noch weitere Möglichkeiten<br />
als die hier gezeigten. So ist es z. B. auch<br />
möglich, eigene Feldtypen zu definieren, Feldern<br />
„Widgets“ mitzugeben, um deren Verhalten zu ändern<br />
usw. Dies ist auch in der eingebauten Dokumentation<br />
(kurz) erklärt.<br />
Eingangs wurde bereits erwähnt, dass auch<br />
Fungiform alle gängigen Feldtypen generieren<br />
kann sowie ein paar „Extrafelder“ an Bord hat.<br />
Des Weiteren unterstützt Fungiform den Einsatz<br />
von Recaptchas [22] und bietet mit Bordmitteln<br />
Schutz vor Cross-Site-Request-Forgery [23].<br />
Aufgrund der fehlenden Dokumentation müssen<br />
auch hier der Quelltext beziehungsweise die<br />
Kommentare darin gelesen werden, um herauszufinden,<br />
wie diese Funktionen zu nutzen sind.<br />
Flatland<br />
Flatland trägt ebenso wie Fungiform eine recht<br />
niedrige <strong>Version</strong>snummer, nämlich 0.0.1, und<br />
wird auf PyPi [24] mit dem Status „beta“ deklariert.<br />
Laut Homepage des Projekts [25] ist das<br />
Framework komplett, frei von größeren Bugs, einsatzfähig<br />
und auch tatsächlich im Einsatz. Bei<br />
den Tests mit Flatland für diesen Artikel traten in<br />
der Tat keine Probleme auf – aber es fehlt noch<br />
Dokumentation [26]. Dies ist aktuell in der Tat das<br />
größte Manko von Flatland. Es gibt zwar eine<br />
schon recht umfangreiche Dokumentation [27],<br />
diese beschreibt aber fast ausschließlich das Anlegen<br />
von eigenen Klassen und den Einsatz der<br />
# -*- coding: utf -8 -*-<br />
from flatland import Form , String , Date<br />
from flatland.validation import Present , ValueIn , IsEmail , \<br />
ValuesEqual , IsEmail<br />
GENDER_DATA = [u'männlich',u'weiblich']<br />
def not_allowed_name(element , state):<br />
if element.value in ['admin','superuser']:<br />
element.errors.append(u'Verbotener Name')<br />
return False<br />
PROGRAMMIERUNG<br />
class UserData(Form):<br />
name = String.using(label = u'Name',<br />
validators=[Present(missing=u'Kein Name eingegeben'),<br />
not_allowed_name])<br />
birthday = Date.using(label = u'Geburtsdatum',optional = True)<br />
gender = String.using(label = u'Geschlecht',<br />
validators=[Present(missing=u'Geschlechtsangabe fehlt'),<br />
ValueIn(GENDER_DATA ,fail =<br />
u'"%(value)s" ist ungültiger Wert für %(label)s.')])<br />
class LoginForm(Form):<br />
email = String.using(label='E-Mail',<br />
validators=[<br />
Present(missing=u'Kein E-Mail Adresse eingegeben'),<br />
IsEmail(invalid=u'Keine gültige E-Mail Adresse')])<br />
pass1 = String.using(label = u'Passwort',<br />
validators=[Present(missing = 'Kein Passwort eingegeben')])<br />
pass2 = String.using(label = u'Passwort Wiederholung',<br />
validators=[Present(missing = 'Passwortwiederholung fehlt')])<br />
validators = [<br />
ValuesEqual(pass1 ,pass2)]<br />
Listing 5: flatland_forms.py<br />
© <strong>freiesMagazin</strong> CC-BY-SA 3.0 Ausgabe 12/2011 22