【发布时间】:2016-09-30 07:27:42
【问题描述】:
我有这样的视图集
class NeProjectsViewSet(viewsets.ViewSet):
def list(self, request,org_unique_id):
''' something '''
def create(self, request,org_unique_id):
''' something '''
def retrieve(self):
''' something '''
def update(self, request, pk):
''' something '''
def partial_update(self, request):
''' something '''
def destroy(self, request):
''' something '''
我有这样的方法
def check_session(self,request):
current_datetime = datetime.now()
if ('last_login' in request.session):
last = (current_datetime - datetime.strptime(request.session['last_login'], "%Y-%m-%d %H:%M:%S.%f")).seconds
if last > base.SESSION_IDLE_TIMEOUT:
del request.session['token']
raise ValueError('Session Expired')
else:
request.session['last_login'] = str(current_datetime)
return (request.session['token'] == request.META['HTTP_AUTHORIZATION'])
为每个请求验证会话,为此我需要在视图集中的每个方法之前调用此方法。我在某处读到写自定义装饰器是更好的方法,所以如何为我的视图集实现自定义装饰器以检查请求的会话
【问题讨论】:
-
在这种情况下,add custom middleware 很可能会更方便
-
我只想验证特定 api 的会话,而不是每个 api,如果我们可以用中间件做到这一点,你能提供代码如何做到这一点
标签: python django python-decorators