使用python中的装饰器发送请求体

时间:2016-09-02 11:58:07

标签: python django request decorator

我在django项目中有一个函数:

class my_class():

def post(self, request, id, format=None):
    logger.info(
                ''.join(
                    ["id"+str(request.get('id')),
                     "name"+str(request.get('name')),
                     "grade"+str(request.get('grade'))]
               )
     )
    row = Student(
         id = request.get('id'),
         name = request.get('name'),
         grade = request.get('grade')
    )
    row.save()

现在我希望在我的这个函数周围有一个装饰器( @logger ),它记录了所有内容(logger.info)。即我只应在函数定义上方添加@logger,并可以记录所有请求体。有人可以帮助我,我怎么能这样做。我将请求正文从post发送到装饰器时遇到问题。

2 个答案:

答案 0 :(得分:1)

def logger(func):
    def decorator(request, *args, **kwargs):
        # log here
        return func(request, *args, **kwargs)
    return decorator

答案 1 :(得分:0)

我想这应该足够了,您可能还想阅读this

class Logger(object):

    def __init__(self, f):
        self.f = f

    def __call__(self, request, *args, **kwargs):
        logger.info(request.GET)
        self.f(request, *args, **kwargs)
相关问题