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.
verschiedenen existierenden Felder. Eine Erklärung,<br />
wie man aus einer Formularklasse HTML<br />
erzeugt, fehlt z. B. noch vollständig. Glücklicherweise<br />
wurde auf der Europython 2010 ein Vortrag<br />
zu Flatland gehalten, welcher die Nutzung komplett,<br />
wenn auch relativ kurz, erläutert [28]. Wer<br />
sich näher mit Flatland beschäftigen möchte, der<br />
sollte sich die Folien unbedingt ansehen.<br />
Ähnlich wie das im Rahmen von Deform angesprochene<br />
Colander, kann Flatland auch komplexere<br />
Datenstrukturen darstellen, da sich mehrere<br />
Felder beliebig in Dictionaries und Listen zusammenfassen<br />
lassen. Diese dürfen auch wiederum<br />
Dictonaries und Listen enthalten. Darauf wird im<br />
Rahmen dieses Artikels aber nicht eingegangen.<br />
Anlegen der Formulare<br />
Als Erstes werden wieder die notwendigen Importe<br />
durchgeführt, einmal für die verwendeten Felder<br />
und einmal für die eingesetzten Validatoren.<br />
Ansonsten wird für jedes Feld zuerst der Datentyp<br />
festgelegt und danach das Label sowie die<br />
anzuwendenden Validatoren.<br />
Weiterhin wird in der Klasse UserData ein eigener<br />
Validator namens not_allowed_name definiert.<br />
Dieser wird später im Feld name eingesetzt<br />
und prüft, ob der eingegebene Name innerhalb<br />
der nicht erlaubten Liste von Namen liegt.<br />
Bei der Klasse LoginForm wird ein Validator<br />
außerhalb der Felddefinition eingesetzt. Dieser<br />
wird also auf das gesamte Formular angewendet.<br />
Dies ist immer dann praktisch, wenn – so<br />
wie hier – Eingaben aus verschiedenen Feldern<br />
miteinander verglichen werden sollen. Etwas umständlich<br />
ist die Tatsache, dass Flatland zwar<br />
selbst definierbare Fehlermeldungen bei nicht erfolgreicher<br />
Validierung erlaubt, die Definition an<br />
sich aber nicht einheitlich ist. Wie auch im Listing<br />
5 oben zu sehen ist, wird die eigene Fehlermeldung<br />
im Falle des Validators Present über<br />
missing = ’...’ festgelegt, im Falle des Validators<br />
IsEmail aber über invalid = ’...’.<br />
Einheitlicher ist eher der Weg, den die anderen<br />
Frameworks wählen,.<br />
Im Gegensatz zu allen anderen hier vorgestellten<br />
Formular-Frameworks kennt Flatland scheinbar<br />
keinen eigenen Feldtyp für ein Auswahlfeld.<br />
„Scheinbar“ deshalb, weil im Rahmen der Recherche<br />
dieses Artikels dieser Feldtyp zwar nicht aufzufinden<br />
war, es aber nicht auszuschließen ist,<br />
dass das Auswahlfeld schlichtweg noch nicht dokumentiert<br />
ist und somit nicht „gefunden“ wurde.<br />
Tests mit Flatland in der Python-Shell<br />
Im Folgenden werden die mit Flatland definierten<br />
Klassen für die Formulare ein wenig in der<br />
Python-Shell erkundet. Zuerst werden die beiden<br />
Formularklassen importiert,<br />
>>> from flatland_forms import <br />
LoginForm , UserData<br />
und eine eigene Klasse daraus instanziiert:<br />
>>> ud = UserData()<br />
Der Aufruf von ud gibt die Feldnamen und die aktuellen<br />
Werte zurück:<br />
PROGRAMMIERUNG<br />
>>> ud<br />
{u'birthday': , u'name': , u'sex': }<br />
Da noch keine Werte übergeben wurden, ist<br />
value natürlich überall None. Einzelne Felder<br />
sind wie bei Dictionaries aufrufbar:<br />
>>> ud['name']<br />
<br />
Die Label für Felder können wie folgt aufgerufen<br />
werden:<br />
>>> ud['name'].label<br />
u'Name'<br />
Als Nächstes werden Daten an das Formular<br />
übergeben und validiert:<br />
>>> from datetime import date<br />
>>> mydata = {'name':'Otto',<br />
'gender':u'männlich',<br />
'birthday':date(1977,1,1)}<br />
>>> ud.set(mydata)<br />
True<br />
>>> ud.validate()<br />
True<br />
>>> ud<br />
{u'gender': , u'birthday':<br />
, u'name': }<br />
© <strong>freiesMagazin</strong> CC-BY-SA 3.0 Ausgabe 12/2011 23