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.

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!