@Martijn ist oder könnte die richtige Methode zum Speichern des Objekts in Sitzungsvariablen sein.
Aber das Problem wurde gelöst, indem wir zurück zu Django 1.5 gingen. Dieses Problem ist speziell für django 1.6.2.
Hoffe, das hilft.
Ich habe eine einfache Ansicht
%Vor%Für den obigen Code bekomme ich den Fehler
%Vor%Django Version 1.6.2. Was mache ich falsch ?
Ich habe eine einfache Ansicht
%Vor%Für den obigen Code bekomme ich den Fehler
%Vor%Django Version 1.6.2. Was mache ich falsch ?
In einem Cookie würde ich nur den Primärschlüssel des Objekts speichern:
%Vor%Wenn Sie die Karte aus der Sitzung laden, besorgen Sie sich die Karte erneut mit:
%Vor%, die %code% auf %code% setzt, wenn in der Sitzung kein %code% -Eintrag vorhanden ist oder die bestimmte Karte nicht existiert.
In Django können Sie mit Sitzung und Ctypes Folgendes tun:
%Vor%@Martijn ist oder könnte die richtige Methode zum Speichern des Objekts in Sitzungsvariablen sein.
Aber das Problem wurde gelöst, indem wir zurück zu Django 1.5 gingen. Dieses Problem ist speziell für django 1.6.2.
Hoffe, das hilft.
Es gibt zwei einfache Möglichkeiten, dies zu tun.
Leider funktioniert die vorgeschlagene Antwort nicht, wenn das Objekt kein Datenbankobjekt ist, sondern eine andere Art von Objekt - etwa datetime oder eine Objektklasse Foo (object): pass, das kein Datenbankmodellobjekt ist.
Sicher, wenn das Objekt zufällig ein ID-Feld hat, können Sie das ID-Feld in der Datenbank speichern und den Wert von dort nachschlagen, aber im Allgemeinen hat es vielleicht keinen so einfachen Wert und die einzige Möglichkeit besteht darin, die Daten zu konvertieren so zu stringeln, dass Sie diese Zeichenfolge lesen und das Objekt basierend auf den Informationen in der Zeichenfolge rekonstruieren können.
Im Fall eines Datetime-Objekts wird dies dadurch erschwert, dass ein naives Datetime-Objekt zwar das Format% Z ausgeben kann, indem es einfach nichts druckt, das strptime -Objekt aber das Format% Z nicht lesen kann, wenn es nichts gibt wird ersticken, es sei denn, es gibt dort eine gültige Zeitzonenspezifikation - wenn Sie also ein Datetime-Objekt haben, das ein TZInfo-Feld enthalten kann oder nicht, müssen Sie einmal zweimal mit% Z und zweimal ohne Z%. Das ist dumm. Es wird noch weniger durch die Tatsache gemacht, dass Datetime-Objekte eine fromtimestamp-Funktion haben, aber keine totimestamp-Funktion, die einheitlich einen Zeitstempel erzeugt, den vontimestamp liest. Wenn es einen Format-Code gibt, der die Nummer des Zeitstempels erzeugt, die ich nicht gefunden habe und wieder, leiden strftime / strptime unter der Tatsache, dass sie nicht wie oben beschrieben symmetrisch sind.
In einem Cookie würde ich nur den Primärschlüssel des Objekts speichern:
%Vor%Wenn Sie die Karte aus der Sitzung laden, besorgen Sie sich die Karte erneut mit:
%Vor%, die card
auf None
setzt, wenn in der Sitzung kein card
-Eintrag vorhanden ist oder die bestimmte Karte nicht existiert.
Es gibt zwei einfache Möglichkeiten, dies zu tun.
Leider funktioniert die vorgeschlagene Antwort nicht, wenn das Objekt kein Datenbankobjekt ist, sondern eine andere Art von Objekt - etwa datetime oder eine Objektklasse Foo (object): pass, das kein Datenbankmodellobjekt ist.
Sicher, wenn das Objekt zufällig ein ID-Feld hat, können Sie das ID-Feld in der Datenbank speichern und den Wert von dort nachschlagen, aber im Allgemeinen hat es vielleicht keinen so einfachen Wert und die einzige Möglichkeit besteht darin, die Daten zu konvertieren so zu stringeln, dass Sie diese Zeichenfolge lesen und das Objekt basierend auf den Informationen in der Zeichenfolge rekonstruieren können.
Im Fall eines Datetime-Objekts wird dies dadurch erschwert, dass ein naives Datetime-Objekt zwar das Format% Z ausgeben kann, indem es einfach nichts druckt, das strptime -Objekt aber das Format% Z nicht lesen kann, wenn es nichts gibt wird ersticken, es sei denn, es gibt dort eine gültige Zeitzonenspezifikation - wenn Sie also ein Datetime-Objekt haben, das ein TZInfo-Feld enthalten kann oder nicht, müssen Sie einmal zweimal mit% Z und zweimal ohne Z%. Das ist dumm. Es wird noch weniger durch die Tatsache gemacht, dass Datetime-Objekte eine fromtimestamp-Funktion haben, aber keine totimestamp-Funktion, die einheitlich einen Zeitstempel erzeugt, den vontimestamp liest. Wenn es einen Format-Code gibt, der die Nummer des Zeitstempels erzeugt, die ich nicht gefunden habe und wieder, leiden strftime / strptime unter der Tatsache, dass sie nicht wie oben beschrieben symmetrisch sind.