我想使用decorator来处理各种函数(主要是Django视图函数,但不是独占的)的审计。为了做到这一点,我希望能够在执行后审计函数即函数正常运行,如果它返回时没有异常,那么decorator会记录事实。
类似于:
@audit_action(action='did something')
def do_something(*args, **kwargs):
if args[0] == 'foo':
return 'bar'
else:
return 'baz'
其中audit_action
只在函数完成后运行。
Tags:
Decorators通常返回包装函数;只需在调用包装函数后将逻辑放入包装函数。
所以
audit_action(action='did something')
是一个decorator工厂,它返回一个作用域decorator_func
,用于修饰do_something
(do_something = decorator_func(do_something)
)。装饰之后,您的
do_something
引用已被wrapper_func
替换。调用wrapper_func()
会导致调用原始的do_something()
,然后包装函数中的代码就可以执行操作。上面的代码与示例函数相结合,给出了以下输出:
你的装潢师可以自己处理,就像
相关问题 更多 >
编程相关推荐