2017-11-23 11 views
0

보다는 응용 프로그램에 그러나 시크릿 창이나 다른 웹 브라우저에서 앱에 액세스하면 카운터가 재설정되지 않습니다. 내게 그것은 세션이 count : 0으로 초기화되지 않는 것처럼 보입니다. 새로운 세션이 다른 클라이언트의 세션 값을 가져 오는 원인은 무엇입니까?가 web.py 세션처럼 보인다는 오히려 나는 그것이 각 새로 고침에 의해 카운터는 증가를, 즉 정상적으로 작동 응용 프로그램을 실행하는 경우 그래서 아래의 코드가 더 많거나 적은</p> <p><a href="http://webpy.org/cookbook/session" rel="nofollow noreferrer">http://webpy.org/cookbook/session</a>에서 가져 클라이언트

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

세션이 클라이언트에 저장해야하지만이 코드를 실행할 때 하나의 사용자가 응용 프로그램을 사용할 수 있음을 의미하는 것이다 서버에있는 것처럼 보인다 나는를 다시 앱을 다시 실행해야 계수기.

저는 거의 일주일 동안이 문제를 해결할 수 없었습니다. 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을하는 것이 좋습니다. Index에서 return 행을 업데이트해야합니다.

나는 이것이 나를 위해 작동하는지 테스트하고 확인했다.

+0

작동합니다! 고맙습니다!!! –