Benutzerspezifische Werkzeuge
Sie sind hier: Startseite Support FAQs Entwicklung Sessions Was ist beim Programmieren mit Zope Sessions zu beachten?
Eine Ebene höher

Frage

Was ist beim Programmieren mit Zope Sessions zu beachten?

Antwort

  • In Zope Sessions sollte man im i.A. nur Daten von elementaren Python Basistypen (string, int, list, dict, etc) oder Instanzen von Python-Klassen speichern.
  • Persistente Objekte können nicht in einer Session gespeichert werden. Persistente Objekte referenziert man alternativ am besten über den Pfad (getPhysicalPath() abspeichern und das Objekt später via restrictedTraverse() anziehen)
  • Bei der Speicherung von veränderbaren (mutable) Datentypen (wie dict oder list) muss darauf geachtet werden, dass bei einer Änderung (z.B. list.append(), somedict[key] = value) die Werte nur per-thread übernommen werden und nicht persistent gespeichert werden.

    Lösung 1:

           context.REQUEST.SESSION._p_changed = 1 setzen
    

    Lösung 2:

           Das geänderte Objekt der Session neu zuweisen:
    
           S = context.REQUEST.SESSION
           temp_dict = S['mydict']
           temp_dict[newkey] = newvalue
           S['mydict'] = temp_dict
    


Letzte Änderung: 30.04.2006 • Autor: ajung