2011-09-12 56 views
2

我正在爲我的項目使用webpy框架。我從我的'login'類main.py程序登錄。我想在其他一些課程中獲得用戶名。我嘗試了很久的會議並進行了實驗。我已經實施瞭如下的會話。webpy中的會話 - 獲取所有類中的用戶名

store = web.session.DiskStore('sessions') 
session = web.session.Session(app,store,initializer={'login': 0,'privilege': 0}) 
在我登錄類main.py的

當用戶提交的用戶名和密碼,下面的代碼將正常工作。(這是後法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'

回答

2

只需在會話的initializerdict中提供loggedinusername的默認值。當這些屬性沒有設置(即用戶沒有登錄)並且您嘗試訪問它們時,似乎會出現該錯誤。

+0

謝謝安德烈您的建議..最後我在3天后得到了解決方案..! – Unni

+0

@Unni,不客氣!開始使用webpy時,我遇到了完全相同的問題。 –

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字典中的小變化,inititialized用戶匿名和的loggedIn爲假。 感謝安德烈給我的線程。

相關問題