【问题标题】:Using session in web.py, session does not work as documented在 web.py 中使用会话,会话不像记录的那样工作
【发布时间】:2014-05-31 04:39:02
【问题描述】:

我正在使用 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')。

但是,上面的代码看起来和办公文档Sessions In Web.py一样 为什么它不起作用?

请帮忙!

【问题讨论】:

  • 平台:mac os x,web.py:0.37
  • 你能发布你所有的代码吗?这在我的电脑上运行,带有一个主程序。
  • 好的,这就是所有内容,我只是想测试如何设置和获取会话值。 session.count 还是 session.get('count') 还是 session['count']?

标签: python session web.py


【解决方案1】:

在您的代码中,您调用 app = web.application(urls, globals()) 去掉 main 中的那个,一切正常:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多