2010-04-16 50 views

回答

2

那麼,您可以自動將變量添加到/lib/base.py中的基本控制器中。這將自動將其添加到您的pylons應用程序中的每個控制器。我使用repoze.what和我要做的就是在base.py我把:

# if there's no user set, just setup a blank instance 
c.current_user = auth.get_user(User()) 

而這僅僅是一種便利的功能,我寫到一個auth庫。 User()是User模型的空白實例,以便模板具有某些內容並且不會拋出無效的密鑰錯誤。

def get_user(default): 
    """Return the user object from the `repoze.who` Metadata Plugin 

    :param default: default item to send back if user not logged in 

    Since we might not be logged in and template choke on trying to output 
    None/empty data we can pass in a blank User object to get back as a default 
    and the templates should work ok with default empty values on that 

    """ 
    if 'repoze.who.identity' in request.environ: 
     return request.environ['repoze.who.identity']['user'] 
    else: 
     return default 
+0

謝謝,我把它作爲部分日誌記錄在會議中 – Timmy 2010-04-16 22:08:11