在web.py中使用会话,无法按文档正常工作

0 投票
1 回答
740 浏览
提问于 2025-04-18 08:07

我正在用 web.py 写一个网站,当我使用会话(session)时,有点困惑,它的表现和我预期的不一样。以下是我的代码:

#encoding=utf-8
#!/usr/bin/env python

import web

urls = (
        '/', 'Index',
    )


app = web.application(urls, globals())

if web.config.get('_session') is None:
    store = web.session.DiskStore('sessions')
    session = web.session.Session(app,store,initializer={'count': 0})
    web.config._session = session
else:
    session = web.config._session

render = web.template.render('templates', base='base')


class Index:
    def GET(self):
        print session.count
        print session.get('count')
        #print session['count']

if __name__ == "__main__":
    app = web.application(urls, globals())
    app.run()

我的问题是,使用 session.count 和 session['count'] 会出现错误(AttributeError: 'ThreadedDict' object has no attribute 'count')。

但是,上面的代码看起来和官方文档中的内容 Web.py中的会话 一样,为什么它不工作呢?

请帮帮我!

1 个回答

1

在你的代码中,你调用了 app = web.application(urls, globals()),把主函数中的那个去掉,其他的就都能正常工作了:

#encoding=utf-8
#!/usr/bin/env python

import web

urls = (
        '/', 'Index',
    )


app = web.application(urls, globals())

if web.config.get('_session') is None:
    store = web.session.DiskStore('sessions')
    session = web.session.Session(app,store,initializer={'count': 0})
    web.config._session = session
else:
    session = web.config._session

render = web.template.render('templates', base='base')


class Index:
    def GET(self):
        print session.count
        print session.get('count')
        #print session['count']

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

撰写回答