Google App Engine - Sitzungen mit Python 2.7 arbeiten

8

Erstens, ich bin ganz neu bei GAE, also ist es möglich, dass ich das falsch mache - aber ich habe PHP schon früher benutzt und Session war, wie ich persistente Daten behielt. Ich benutze Python 2.7, weil ich das für meine ganze andere Python-Entwicklung verwende - obwohl ich mich frage, ob ein Downgrade auf 2.5 eine gültige, wenn nicht eine ideale Lösung sein könnte.

Das Szenario besteht darin, dass ich eine Proof-of-Concept-Site erstelle und eine "Dummy" -Login-Schaltfläche haben muss, die einfach eine Session-Variable namens 'user' mit einem Wert setzt von 'admin' . Ich möchte dann die Navigationsvorlage einchecken, um zu sehen, ob die Variable gesetzt ist, und wenn das der Fall ist, werde ich einige zusätzliche Menübefehle hinzufügen. Sehr einfach. (Hinweis: Ich weiß, das ist nicht sicher, vernünftig oder irgendetwas, was getan werden sollte - das Problem ist, dass die Sitzung nicht funktioniert, nicht was ich damit mache - ich mache ein paar andere Dinge in der Code, der Sitzung verwendet - keiner von ihnen funktioniert bei der Bereitstellung)

Es scheint, dass es einige verschiedene Session-Bibliotheken für GAE mit Python gibt, und ich habe versucht, dasjenige, das am häufigsten in Google-Suchen empfohlen wurde - gaeutilities , aber das verursachte Fehler und würde nicht funktionieren (Ich stolperte schließlich über diesen Beitrag um zu erklären, dass es nicht mit Python 2.7 kompatibel ist. Ein bisschen mehr Suche führte mich zu dieser Bibliothek von appenginelearn.com, die ich eingefallen und es hat perfekt funktioniert ... bis ich es eingesetzt habe - dann tut es einfach nichts. Ich würde gerne einige Hinweise oder Ratschläge bekommen, warum das scheitern könnte. Hier ist der relevante Code, den ich verwende:

Ich habe das util-Bibliotheksverzeichnis von appenginelearn.com im Stammverzeichnis des Anwendungsverzeichnisses abgelegt und dann die Session importiert:

%Vor%

Dann habe ich die Login und Logout Klassen hinzugefügt:

%Vor%

Und der folgende (schreckliche) Code in der Hauptklasse (dies wird für alle Seiten in der Demo gemacht)

%Vor%

Und dann das in der HTML-Vorlagendatei

%Vor%

Und die Fehler im Protokoll:

%Vor%     
Steve 04.10.2012, 22:32
quelle

1 Antwort

18

Haben Sie webapp2-Sitzungen gesehen? Es ist alles eingebaut und Sie können sofort loslegen.

Ссылка

  

Dieses Modul bietet eine leichte aber flexible Sitzungsunterstützung für webapp2.   Es hat drei eingebaute Backends: sichere Cookies, Memcache und Datenspeicher. Neue Backends können hinzugefügt werden, um CustomBackendSessionFactory zu erweitern.   Der Sitzungsspeicher kann mithilfe der Methode SessionStore.get_session () mehrere Sitzungen mit unterschiedlichen Schlüsseln bereitstellen, sogar mit unterschiedlichen Back-Ends in derselben Anfrage. Standardmäßig wird eine Sitzung mit dem Standardschlüssel aus der Konfiguration zurückgegeben.

%Vor%

Dann ist es wirklich einfach, ein Login-System zu erstellen, das scheint schon geschehen zu sein. Und Sie können den Datenspeicher und / oder Memcache mit den webapp2-Sitzungen verwenden, wie es bevorzugt wird.

    
Paul Collingwood 04.10.2012, 22:40
quelle