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

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
beetronic
User
Beiträge: 33
Registriert: Mittwoch 2. Mai 2007, 10:23

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
Zuletzt geändert von beetronic am Mittwoch 21. November 2007, 00:00, insgesamt 1-mal geändert.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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*
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
beetronic
User
Beiträge: 33
Registriert: Mittwoch 2. Mai 2007, 10:23

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
Antworten