在web.py中使用会话,无法按文档正常工作
我正在用 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()