用户访问端点时记录

时间:2017-09-11 11:25:58

标签: django django-rest-framework django-views

我想创建一个自定义CBV,这样每次用户访问任何使用此自定义CBV的端点时都可以记录。我试过这样的事情:

class LogUserAccess(APIView):
    def dispatch(self, request, *args, **kwargs):
        logger.info('User {} accessing to {} ({})'.format(request.user, resolve(request.path).app_name, self.__class__.__name__))
        super(LogUserAccess, self).dispatch(request, *args, **kwargs)

...但无法识别记录器实例。

实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用中间件。在这种情况下,您可以尝试process_request中间件。查看this

def process_request(self, request):
     logger.info('User {} accessing to {} ({})'.format(request.user, resolve(request.path).app_name, self.__class__.__name__))