我正在为我的项目使用webpy框架。我从main.py程序的“登录”类登录。我想在其他课程中获取用户名。我尝试了会话并试验了很长时间。我已经实现了如下的会议。
store = web.session.DiskStore('sessions')
session = web.session.Session(app,store,initializer={'login': 0,'privilege': 0})
在我的main.py登录类中,当用户提交用户名和密码时,以下代码将起作用。(这是我登录类的post方法)。
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'
答案 0 :(得分:3)
我在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
我还对initilizer字典进行了一些小改动,初始化用户为匿名用户,登录为false。 感谢安德烈给我的线程。
答案 1 :(得分:2)
只需在会话loggedin
username
中提供initializer
和dict
的默认值即可。当未设置这些属性时(即,当用户未登录时)并且您尝试访问它们时,似乎会出现错误。