2017-11-23 10 views
0

上にあるように、私はアプリを実行する場合は、各リフレッシュ時にいずれかによってカウンタが増加、すなわちすべきであるとして、それは動作しますので、以下のコードは、多かれ少なかれhttp://webpy.org/cookbook/sessionweb.pyセッションはアプリではなく、クライアント

から取られているようですただし、シークレットウィンドウや他のウェブブラウザでアプリにアクセスすると、カウンタはリセットされません。私にとってはセッションがcount:0で初期化されていないようです。新しいセッションが他のクライアントのセッションの値を取得する原因は何ですか?

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() 

セッションは、クライアント上に格納する必要がありますが、私はこのコードを実行すると、それが唯一のユーザーがアプリを使用することができることを暗示するサーバー、上にあるようにそれはそうと、私はリセットするために、アプリケーションを再実行する必要がカウンタ。

私はこれをほぼ1週間は解決できませんでした。 Pleeeaseヘルプ。

答えて

0

この例では、最初のsession変数からセッションが作成されています。たとえば、session.count += 1は、現在のsessioncountに1を加算します。コードでは、各ユーザーのsession_dataを変更します。マニュアルは初期化子でセッション変数を作成する実証方法は次のとおりです。

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

、代わりのsession_data['count'] += 1をやって、ドキュメントがsession['count'] += 1またはsession.count += 1をやってお勧めします。またIndexreturn行を更新する必要があります。

私はこれが私のために働くことをテストし、確認しました。

+0

これは機能します。ありがとうございました!!! –

関連する問題