2011-11-15 81 views
0

請看下代碼:CherryPy的傳遞函數之間的局部變量的根()

class Root: 
    def __init__(self): 
     self._Name = None 

    def index(self): 
     self._Name = getNameFromUser() 
     return mytemplate.render() 
    index.exposed = True 

    def foo(self): 
     myName = self._Name 
     //dosomething 
     return mytemplate.render(showmyName(myName)) 
    foo.exposed = True 

if __name__ == '__main__': 
    cherrypy.quickstart(Root()) 

這裏的問題是: 用戶1,用戶2和用戶3進來, 那麼當網站要顯示foo()的名稱它返回進入站點的最近用戶 我希望每個用戶都能看到他/她的名字。

In Fact I want to have local variable per user HOW to do that ? 

回答

1

當您設置服務器對象上的東西,你將它設置爲應用不是用戶。如果要臨時將信息存儲在用戶中,請使用sessions接口或cookie中的信息(如果它不是需要保護/防篡改的信息)。

+0

所有通常的注意事項都適用 - *永遠不*信任用戶數據,*永遠*消毒它,即使您設置它 - 除非它永遠不會離開您的服務器,它可以被篡改。 –

+1

那麼,我想要的是爲每個調用服務器的用戶設置一些類實例,然後我可以在類中創建一個本地變量。無論如何要這樣做? – Emax

+0

@ user1034723 - 你想完成什麼,需要CherryPy類保持對用戶的引用?換句話說,爲什麼您無法獲取用戶的信息,將其存儲在會話中,然後從每個請求的會話中還原用戶的信息? –