最近在学习web.py使用session时,经常会遇到AttributeError错误,大体报错内容是:
AttributeError: ‘ThreadedDict’ object has no attribute ‘xxxxx’
网上找的解决办法都是关闭web.py的调试模式,但有时关闭后也会报错,很是郁闷。
最后郑晓摸索出了使用session时需要注意的几点,在这里记录一下:
1. 首先请关闭调试模式:
web.config.debug = False
代码需加到import web后,调用web.application之前,像这样:
import web
web.config.debug = False
urls = ('/', 'index')
app = web.application(urls, globals())
2. 创建session时,加上initializer参数,给你的session设置个默认值,像这样:
session = web.session.Session(app, web.session.DiskStore('sessions'), initializer={'user':None, 'login':None})
按说不加initializer也应该可以使用啊,不知道为什么我不加的话,就会报错,不管你是不是判断了is not None,只要你调用了session.xxx就报错。
3.最?宓囊坏悖荷境??按唇ǖ?essions文件。
上一步中,郑晓设置了将session以文件的形式储存到当前目录下的sessions目录中。所以在上二步确认无问题后,手动将sessions目录中的已存在的文件删除。不删除的话,程序还是使用的旧版session,还会报错- -!
时间: 2024-09-17 11:33:53