web.py下session初始化异常问题
在定义了session时使用initializer进行初始值的设定,比如
session = web.session.Session( app, web.session.DiskStore('sessions'), initializer = { "login": 0, "name": None } )
这里我想要在session中保存两个键对login和name,分别初始化为0和None。
但是当使用login进行是否已登录的判断过程中却总是报login没有进行定义的错误。
调试session的值输出得到
<Storage {}>
也就是说没有任何初始值进行过定义。
话说功夫不负苦心人,我翻看web.py的源代码半天也查出个所以然来,转念一想官网的cookbook中提到过session是不支持在debug模式下使用的。但是要说不支持debug模式的话,我明明定义了
web.config.debug = False
只不过这句关闭调试的设置是在session的定义之后进行的,那么调换一下位置先关闭debug在定义session。
输出session的值
<Storage {'ip': u'127.0.0.1', 'login': 0, 'name': None, 'session_id': '56da8438d6d759194123f1bf848e4df5fda18c32'}>
圆满~
.
后记:
如果要在调试模式下使用session,方法如下:
if web.config.get('_session') is None: session = web.session.Session( app, web.session.DiskStore('sessions'), initializer = { "login": 0, "name": None } ) web.config._session = session else: session = web.config._session
马克一下,算是给自己个警钟吧,很多时候在google十下也找不到答案的时候,潜心分析下官方文档吧!
-End-