PDF-Version - freiesMagazin
PDF-Version - freiesMagazin
PDF-Version - freiesMagazin
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
input type="text" name="name" value<br />
="" id="deformField1"/> [...] '<br />
Die Ausgabe ist stark gekürzt, weil der HTML-<br />
Code sonst den Rahmen des Artikels überschreiten<br />
würde. Wie zu sehen ist, generiert Deform direkt<br />
das komplette HTML, also inklusive -<br />
Tags etc. Auch wenn es im obigen Beispiel<br />
nicht zu sehen ist, bindet Deform auch direkt<br />
Javascript-Code mit ein. Die passenden Skripte<br />
werden bei der Installation des Frameworks mit<br />
kopiert und liegen im Installationsverzeichnis von<br />
Deform im Unterverzeichnis /scripts. Ebenso<br />
bringt Deform direkt passende Stylesheets mit,<br />
diese liegen im Unterverzeichnis /css. Der Einsatz<br />
der Skripte und der Stylesheets in der eigenen<br />
Applikation ist aber optional, die gerenderten<br />
Formulare können auch ohne Weiteres allein genutzt<br />
werden.<br />
Als nächstes werden Daten an das Formular<br />
übergeben und diese dann validiert. Die Daten<br />
erwartet Deform als Tuple von 2er-Tuplen, was<br />
übrigens von den meisten Webframeworks standardmäßig<br />
auch geliefert wird:<br />
>>> mydata = (('name','Otto'),('<br />
gender',u'männlich'),('birthday','<br />
1977-1-1'))<br />
>>> ud.validate(mydata)<br />
{'gender': u'm\xe4nnlich', '<br />
birthday': datetime.date(1977, 1, <br />
1), 'name': u'Otto'}<br />
Und noch eine nicht erfolgreiche Validierung:<br />
PROGRAMMIERUNG<br />
>>> mydata = (('name','admin'),('gender',u'männlich'),<br />
('birthday','1977-1-1'))<br />
>>> ud.validate(mydata)<br />
Traceback (most recent call last):<br />
File "", line 1, in <br />
File "/usr/local/lib/python2.6/dist -packages/deform -0.9.3-py2.6.egg/<br />
deform/field.py", line 519, in validate<br />
raise exception.ValidationFailure(self , cstruct , e)<br />
deform.exception.ValidationFailure<br />
Hier geht Deform einen etwas anderen Weg als<br />
die anderen Frameworks: Bei erfolgreicher Validierung<br />
wird nicht True zurückgeliefert, sondern<br />
die validierten Daten als Dictionary. Im Falle einer<br />
fehlerhaften Validierung wird eine Exception geworfen.<br />
Möchte man die Fehlermeldungen sehen,<br />
so muss man erneut die render()-Methode der<br />
Formularklasse aufrufen. Der HTML-Code enthält<br />
dann alle Fehlermeldungen:<br />
>>> ud.render()<br />
[...]<br />
class="error" id="error -deformField1">nicht erlaubter Benutzername <br />
[...]<br />
Da Deform bei Nicht-Validierung immer einen<br />
Fehler wirft, muss in einer Applikation natürlich<br />
immer ein try...except-Block genutzt werden.<br />
Ein Beispiel dazu ist in der Dokumentation zu finden<br />
[5].<br />
Weitere Funktionen<br />
Neben den hier gezeigt Feldtypen kennt Deform<br />
natürlich auch noch eine Reihe weiterer Felder,<br />
z. B. für Integerwerte. Außerdem bietet das Framework<br />
unter Einsatz von Javascript auch die<br />
Möglichkeit der automatischen Vervollständigung<br />
von Eingaben in Felder [6].<br />
Durch den Einsatz von Colander für die Definition<br />
des Schemas ist es auch ohne weiteres möglich,<br />
komplexer und verschachtelte Datenstrukturen<br />
darzustellen.<br />
WTForms<br />
Das nächste Framework ist WTForms [7],<br />
welches in der <strong>Version</strong> 0.6.2 vorliegt. Das Framework<br />
ist als stabil und für den produktiven Einsatz<br />
bereit gekennzeichnet.<br />
WTForms beansprucht für sich selbst, ein „einfaches“<br />
Framework zu sein, mit dem man schnell<br />
und mit wenig Aufwand Formulare erstellen kann.<br />
Weiterhin ist das Framework so gestaltet, dass<br />
sich damit generierte Formularelemente ohne<br />
Probleme in Templates einfügen lassen, ohne<br />
dass darin größere Änderungen von Nöten sind.<br />
© <strong>freiesMagazin</strong> CC-BY-SA 3.0 Ausgabe 12/2011 14