webpy中的会话-在所有类中获取用户名
Posted
技术标签:
【中文标题】webpy中的会话-在所有类中获取用户名【英文标题】:session in webpy - getting username in all classes 【发布时间】:2011-11-15 00:32:06 【问题描述】:我正在为我的项目使用 webpy 框架。我正在从 main.py 程序的“登录”类登录。我想获得其他班级的用户名。我尝试了 session 并尝试了很长时间。我已经实现了如下所示的会话。
store = web.session.DiskStore('sessions')
session = web.session.Session(app,store,initializer='login': 0,'privilege': 0)
在我的 main.py 登录类中,当用户提交用户名和密码时,以下代码将起作用。(这是我的登录类的 post 方法 0f)。
class login:
def POST(self):
i = web.input(form_submit="Login")
authdb = sqlite3.connect('database/users.db')
conn = authdb.cursor()
if i.form_submit=='Login':
check = conn.execute('select * from user_details where username=?and password=?', (i.username, i.password))
n=check.fetchall()
if len(n)!=0:
session.loggedin = True
session.username = i.username
return render.home('Home')
else: return render.display('Wrong username or password !')
我想获得其他班级的用户名。我尝试使用 session.username
访问用户名,但它显示以下错误。 AttributeError: 'ThreadedDict' object has no attribute 'username'
【问题讨论】:
【参考方案1】:我在我的 main.py 程序中进行了以下更改。
所做的改变:而不是仅仅给予
session = web.session.Session(app,store,initializer='login': 0,'privilege': 0,'user':'anonymous','loggedin':False)
我添加了以下代码行,
if web.config.get('_session') is None:
session = web.session.Session(app,store,initializer='login': 0,'privilege': 0,'user':'anonymous','loggedin':False)
web.config._session = session
else:
session = web.config._session
我还在初始化器字典中做了一个小改动,将用户初始化为匿名,登录为假。 感谢 Andrey 为我提供线索。
【讨论】:
【参考方案2】:只需在会话的initializer
dict
中提供loggedin
和username
的默认值。当未设置这些属性(即用户未登录时)并且您尝试访问它们时,似乎会出现该错误。
【讨论】:
感谢 Andrey 的建议.. 3 天后我终于得到了解决方案..! @Unni,不客气!开始使用 webpy 时,我遇到了完全相同的问题。以上是关于webpy中的会话-在所有类中获取用户名的主要内容,如果未能解决你的问题,请参考以下文章