Web.session.Session似乎没有通过会话存储值

时间:2019-11-01 22:34:23

标签: python session web.py

对于我的项目,我需要使用python构建网络并保留一些信息并将其与用户的浏览器相关联。刷新或使用web.seeother('/')重定向页面时,我正在使用库web.py和web.session.Session()通过浏览器保留大量信息。

我遵循了文档中发布的示例:example countexample 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。

有什么想法吗?

0 个答案:

没有答案