从装饰者访问django会话

时间:2010-04-10 14:20:54

标签: python django decorator django-sessions

我有一个装饰我用于我的观点@valid_session

from django.http import Http404

def valid_session(the_func):
"""
function to check if the user has a valid session
"""
def _decorated(*args, **kwargs):        
    if ## check if username is in the request.session:
        raise Http404('not logged in.')
    else:
        return the_func(*args, **kwargs)
return _decorated

我想在我的decoartor中访问我的会话。当用户登录时,我将用户名放在我的会话中。

3 个答案:

答案 0 :(得分:4)

以下内容会解决您的问题:

def valid_session(func):
    def decorated(request, *args, **kwargs):
        print request.session
        return func(request, *args, **kwargs)
    return decorated

答案 1 :(得分:1)

view函数将请求作为第一个参数,因此装饰器也会将其作为第一个参数接收。你可以通过request.session拉出会话。

答案 2 :(得分:0)

您可以将请求(或仅会话)作为parameter to the decorator传递。我只是不知道如何通过它来传递它。我昨晚试图找出类似的东西。