flask---------登录认证装饰器

装饰器也有类装饰器

        1 装饰类的装饰器      2 类作为装饰器

flask路由下加装饰器,一定要加endpoint
	-如果不指定endpoint,反向解析的名字都是函数名,不加装饰器没有问题,就是正常函数index,detail
    -如果加了装饰器---》index,detail都变成了inner---》反向解析的名字都是函数名inner,报错了
    -wrapper装饰器----》把它包的更像---》函数名变成了原来函数的函数名
def test():
    print("test")


def add(func):
    print(func)


class Person:
    def __call__(self, func):
        def inner(*args, **kwargs):

            res = func(*args, **kwargs)
            return res
        return inner
p = Person()

1.
@add       test=add(test) ====>none
def test():
    print("test")

2.
@p           test = p(test) =====>对象加括号会触发__call__====>Person的__call__(test)==>返            
             回inner,以后test就是inner---》test(参数)--》执行的是inner
def test():
    print("test")

### 有参装饰器--->额外为被装饰的函数传参数
@auth(10)     # Foo=auth(10)(Foo)
class Foo():
    pass

你可能感兴趣的:(flask,flask,python,后端)