Webpy 会话:AttributeError:“ThreadedDict”对象没有属性“用户名”;
我正在使用 web.py 在 python 中制作一个 web 应用程序,我已经设置了表并可以登录用户和所有内容,但会话的初始化程序似乎不起作用。
我的代码中有以下内容:
store = web.session.DBStore(db, 'sessions')
session = web.session.Session(app, store, initializer={'logged_in': 0, 'username': ''})
render = web.template.render('templates/', base='base', globals={'session': session, 'username': session.username})
但这会引发错误: AttributeError:'ThreadedDict'对象没有属性'username'
可以做什么?我基本上只是按照这里的例子:
http://webpy.org/cookbook/sessions
I am making a webapp in python using web.py, I have set up the tables and can login the user and everything, but the initializer for sessions doesn't seem to work.
I have the following in my code:
store = web.session.DBStore(db, 'sessions')
session = web.session.Session(app, store, initializer={'logged_in': 0, 'username': ''})
render = web.template.render('templates/', base='base', globals={'session': session, 'username': session.username})
But this throws the error:
AttributeError: 'ThreadedDict' object has no attribute 'username'
What can be done? I basically just followed the example here:
http://webpy.org/cookbook/sessions
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我遇到了同样的问题,因此我使用 _initializer 属性来获取会话数据。
下面是一个示例:
然后您可以从会话访问在初始化程序中声明的所有数据。如果有人有更好的方法,请告诉我。
PS:我知道已经晚了,但迟到总比不来好……
I had the same issue, so i used the _initializer property to get session data.
Here's an example:
You can then access all the data you declared in the initializer from session. If anyone has a better way, please let me know.
PS: I know its late, but better late then never...
会话仅在处理请求时加载,在设置过程中无法获取其属性。
Session is only loaded when request is processed, you cannot get its attributes during setup.
您正在尝试在设置会话变量之前获取它。
我注意到
session.username
在某些情况下有效。但在 WSGI 下却失败了。这工作正常,在 webpy 文档中:
session.get('username', False)
不是:
session.username
如果您想在初始化程序中使用预设,使用@Antonis-kalou 的答案中的方法。
You are trying to get a session variable before it's set.
I've noticed that
session.username
works in some circumstances. But under WSGI it fails.This works fine and is in the webpy docs :
session.get('username', False)
Not :
session.username
If you want to use the presets in the initializer, use the method in @Antonis-kalou 's answer.