18.10.2013 Aufrufe

PDF-Version - freiesMagazin

PDF-Version - freiesMagazin

PDF-Version - freiesMagazin

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!