在tornado项目中一些RequestHandler中的get(),post()方法需要验证登陆用户和用户权限,并返回template或者json。
class IndexHandler(RequestHandler):
@render_json
@login_required
@permission_required(10001)
get(self):
pass
对于同一个get()方法使用了多个装饰器,运行的顺序一般是自上而下,但太多个装饰器个人认为还是比较难以理解。
Demo
def first_decorator(func):
print('--first--')
def first_wrapper(*args, **kwargs):
print('------first---%s---' % func.__name__)
return func(*args, **kwargs)
return first_wrapper
def second_decorator(func):
print('--second--')
def second_wrapper(*args, **kwargs):
print('------second---%s---' % func.__name__)
return func(*args, **kwargs)
return second_wrapper
@first_decorator
@second_decorator
def test_func_1():
print('excute %s' % inspect.stack()[0][