对于我的项目,我需要使用python构建网络并保留一些信息并将其与用户的浏览器相关联。刷新或使用web.seeother('/')重定向页面时,我正在使用库web.py和web.session.Session()通过浏览器保留大量信息。
我遵循了文档中发布的示例:example count和example login,但它们似乎不起作用。每次我刷新浏览器或激活web.seeother('/')时,似乎都在重新初始化可变会话。
在第一个示例中,转到浏览器将session.count的值显示为1,每次刷新页面时将显示值2(我希望这个值不断增加)。
import web
web.config.debug = False
urls = (
"/count", "count",
"/reset", "reset",
)
app = web.application(urls, locals())
# Store session data in folder 'sessions' under the same directory as your app.
session = web.session.Session(app, web.session.DiskStore("sessions"), initializer={"count": 0})
class count:
def GET(self):
session.count += 1
return str(session.count)
class reset:
def GET(self):
session.kill()
return "Reset"
if __name__ == "__main__":
app.run()
在第二个示例中,单击“立即登录”链接不会更改浏览器,因此您永远不会登录。
import web
urls = (
'/', 'Index',
'/login', 'Login',
'/logout', 'Logout',
)
web.config.debug = False
app = web.application(urls, locals())
session = web.session.Session(app, web.session.DiskStore('sessions'))
class Index:
def GET(self):
if session.get('logged_in', False):
return '<h1>You are logged in</h1><a href="/logout">Logout</a>'
return '<h1>You are not logged in.</h1><a href="/login">Login now</a>'
class Login:
def GET(self):
session.logged_in = True
raise web.seeother('/')
class Logout:
def GET(self):
session.logged_in = False
raise web.seeother('/')
if __name__ == '__main__':
app.run()
所有信息都指出信息存储不正确,或者值再次被初始化,或者我不理解会话的工作方式。
我正在Windows 10上使用python 3.7.2。
有什么想法吗?