2017-11-23 1 views
0

So ist der Code unter mehr oder weniger von http://webpy.org/cookbook/sessionscheint wie web.py Sitzungen sind in app statt auf Client

genommen wird, wenn ich die App funktioniert es laufen, wie sie von einem bei jedem Refresh-Zähler erhöht, dh sollte, Wenn ich jedoch in einem Inkognito-Fenster oder einem anderen Webbrowser auf die App zugreife, wird der Zähler nicht zurückgesetzt. Für mich scheint es, als ob die Sitzung nicht mit count: 0 initialisiert wird, wie es sollte. Was bewirkt, dass die neue Sitzung die Werte der Sitzung in einem anderen Client annimmt?

import web 
web.config.debug = False 
urls = (
    "/", "count", 
    "/reset", "reset" 
) 
app = web.application(urls, locals()) 
session = web.session.Session(app, web.session.DiskStore('sessions'), 
{'count': 0}) 
session_data = session._initializer 


class count: 
    def GET(self): 
     session_data['count'] += 1 
     return str(session_data['count']) 

class reset: 
    def GET(self): 
     session.kill() 
     return "" 

if __name__ == "__main__": 
    app.run() 

Sessions auf dem Client gespeichert werden sollen, aber wenn ich diesen Code ausführen scheint es, wie es auf dem Server ist, der, dass nur ein Benutzer die App verwenden kann, bedeuten würde, und ich habe die App erneut ausführen das zurücksetzen Zähler.

Ich konnte das jetzt seit fast einer Woche nicht mehr lösen. Bitte um Hilfe.

Antwort

0

In diesem Beispiel werden Sitzungen erstellt, die aus der ursprünglichen Variablen session erstellt wurden. Zum Beispiel würde session.count += 1 1 zum aktuellen sessioncount hinzufügen. In Ihrem Code ändern Sie session_data für jeden Benutzer. Die Art und Weise der Dokumentation zeigt eine Session-Variable mit einem Initialisierer Erstellung ist:

session = web.session.Session(app, web.session.DiskStore('sessions'), initializer={'count': 0}) 

Also, statt session_data['count'] += 1 zu tun, empfiehlt die Dokumentation session['count'] += 1 oder session.count += 1 tun. Sie müssten auch die return Zeile in Ihrem Index aktualisieren.

Ich habe getestet und bestätigt, dass dies für mich funktioniert.

+0

Es funktioniert! Vielen Dank!!! –

Verwandte Themen