从装饰器访问Django会话
我有一个装饰器,用于我的视图,叫做 @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
我想在我的装饰器里访问我的会话。当用户登录时,我会把用户名放进我的会话里。
相关问题:
3 个回答
0
你可以把请求(或者只是会话)作为一个参数传递给装饰器。我只是不知道怎么获取它来传递进去。昨晚我也在试着弄类似的事情。
1
视图函数的第一个参数是请求,所以装饰器也会把这个请求作为它的第一个参数。你可以通过简单地使用 request.session 来获取会话信息。
4
像下面这样的代码能解决你的问题吗:
def valid_session(func):
def decorated(request, *args, **kwargs):
print request.session
return func(request, *args, **kwargs)
return decorated