2010-11-09 42 views
1

幹所有,我有一個簡單的上下文處理器,看起來在一個會話內,如果'用戶'鍵存在。如果是這樣,我想將它返回給模板。上下文處理器,傳遞一個不存在的會話

這裏是我的背景處理器

def get_user_details(request): 
    user = request.session['user'] 
    data = { 
     'user':user 
    } 
    return data 

,這裏是一個示例視圖

def render_home(request): 
    return render_to_response("home", context_instance=RequestContext(request)) 

如果會話[「用戶」]不存在,我希望它靜默失敗,或返回虛假或無效。

因爲密鑰不存在於會話中,我得到一個KeyError。

任何想法如何解決這個問題?

回答

3

這樣你可以得到像None這樣的默認值:request.session.get('user', None)。就像在普通的Python字典中一樣。

+0

這是最好的解決方案,這也削減上下文處理器降至3線。謝謝! – dotty 2010-11-09 20:23:06

0
def get_user_details(request): 
    try: 
     user = request.session['user'] 
    except KeyError: 
     return 
    data = { 
     'user':user 
    } 
    return data 

或者,如果你想趕上它漸行漸遠,而是執行此操作:

def render_home(request): 
    try: 
     return render_to_response("home", context_instance=RequestContext(request)) 
    except KeyError: 
     return 
3
user = request.session.get('user', None) 

,或者

user = None 
if 'user' in request.session: 
    user = request.session['user'] 
+0

頂一個是我用過的,不幸的是THC4k先到那裏,無論如何感謝。 – dotty 2010-11-09 20:23:52