装饰者:如何获得原始函数变量

时间:2014-10-29 17:28:43

标签: python

给出以下视图功能:

@validate_credentials
def validate_user(request):
    return HttpResponse('OK')

如何在包装器中获取request.GET值?

def validate_credentials(view_function):
    def wrapped_view(*args, **kwargs):
        # request = ?
        return view_function(*args, **kwargs)
    return wrapped_view

1 个答案:

答案 0 :(得分:2)

根据功能是validate_user(req)还是validate_user(request=req),它分别位于argskwargs。以下行将确保在任何一种情况下将参数(或None)分配给request

request = kwargs.get('request', args[0] if args else None)