上下文处理器,传递不存在的会话

时间:2010-11-09 20:13:10

标签: python django session

Hay All,我有一个简单的上下文处理器,它在会话中查看并且是否存在'用户'密钥。如果是的话我想将它返回到模板。

这是我的上下文处理器

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))

如果会话['user']不存在,我希望它静默失败,或者返回False或Null。

因为密钥在会话中不存在,所以我得到一个KeyError。

任何想法是如何解决这个问题的?

3 个答案:

答案 0 :(得分:3)

您可以通过以下方式获取None这样的默认值:request.session.get('user', None)。就像普通的Python dicts一样。

答案 1 :(得分:3)

user = request.session.get('user', None)

,或者

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

答案 2 :(得分: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