Seite 1 von 1

[gelöst]web.py: Daten von einer Seite zur nächsten mitnehmen

Verfasst: Donnerstag 15. November 2007, 13:19
von beetronic
Hallo Leute,

ich versuche mich zur Zeit im web.py einzuarbeiten und schreibe eine kleine Anwendung mit der man elekronische Grusskarten versenden kann.

Grob umrissen, soll es folgendermassen funktionieren ...

Seite 1 (Karte auswählen):
User wählt ein Kartenmotiv aus und wird auf Seite 2 weitergeleitet.

Seite 2 (Karte schreiben):
User füllt ein Formular aus (Name des Absenders, E-Mail Adresse des Empfängers, zu verschickende Nachricht).
Das Formular wird dann mit POST abgeschickt un muss validiert werden.
Wenn Daten fehlen oder fehlerhaft, wird Seite 2 erneut angezeigt.
Wenn Daten ok, geht es mit Seite 3 weiter.

Seite 3 (Vorschau):
Hier kann der User die Karte vor dem Abschicken nochmals überprüfen.
Daten sind nicht ok, dann wieder zurück auf Seite 2 zum nochmaligen Editieren der Daten.
Daten sind ok, User schickt Karte ab und erhält auf Seite 4 eine entsprechende Bestätigung. Intern müssen Daten in DB geschrieben werden.


Mein Problem ist nun folgendes, wie bekomme ich die Formulardaten von Seite 2 nach Seite 3?

Im web.py Tutorial (http://webpy.org/tutorial2.en) werden kurz die Funktionen web.transact(), web.commit(), und web.rollback() erwähnt ...
"Quickly: web.transact() starts a transaction. web.commit() commits it; web.rollback() rolls it back. web.update works just like web.insert except instead of returning the ID it takes it (or a string WHERE clause) after the table name."
Kann ich die Daten eventuell temporär in der DB speichern und bei Abbruch durch den User (auf Seite 3) einfach wieder löschen (mit rollback() bzw. gar nicht erst ein commit() machen?).

Oder kann ich die Daten in einer User Session halten?

Wie mache ich das am besten?!

Vielen Dank für Eure Hilfe, BT

Verfasst: Freitag 16. November 2007, 12:37
von Y0Gi
Beaker ist eine angenehme Caching- und Session-Middleware.

web.py bietet in seinem WSGI-Modul Funktionen, die direkt eine WSGI-Applikation annehmen. Wie man nun genau die eigene Anwendung in web.py in dieser Form erhält, um sie dann in Beaker zu wrappen und weiterzugeben, weiß ich allerdings nicht.

Verfasst: Freitag 16. November 2007, 12:50
von Leonidas
Y0Gi hat geschrieben:Beaker ist eine angenehme Caching- und Session-Middleware.
Ja, kann ich auch empfehlen, ich nutze es für einen Fragebogen. Dabei wird an das WSGI Environmaent noch ein `beaker.session` drangebunden, da kann man so ziemlich alles abspeichern, was man haben will.

Allerdings ohne `web.py` *hust*

Verfasst: Dienstag 20. November 2007, 23:59
von beetronic
Vielen Dank für den Tip mit beaker. Ich hab mir damit eine einfache Beispielanwendung geschrieben, die ich jetzt weiter aufbohren werde. Wen es interessiert, der kann sich den Code hier ansehen. In meinem Beispiel habe ich versucht das Post-Redirect-Get Pattern umzusetzen, wie in diesem Artikel beschrieben.

Hoffe mal, ich habe das alles richtig gemacht. Vielleicht hat ja noch jemand Verbesserungsvorschläge?

Gruss, BT