3

假设我有这条路线:

app.add_url_rule('/',
                  view_func=index,
                  methods=['GET'])

app.add_url_rule('login',
                  view_func=login,
                  methods=['GET', 'POST'])

@validate_access()
def index():
    #......

@validate_access()
def login():
    #......

我有 2 个具有相同装饰器“@validate_access”的端点。当我运行这段代码时,我得到了

AssertionError: View function mapping is overwriting an existing endpoint function:    wrapperAssertionError: View function mapping is overwriting an existing endpoint function: wrapper

我不知道它是否是一个错误。但是,如果有解决方案,请告诉我。

谢谢 :)

4

1 回答 1

17

如果您不提供endpointto add_url_ruleor route,则方法的名称将用作端点。发生的事情是使用包装函数的名称而不是装饰函数的名称创建规则,可能是因为您没有使用functools.wraps

from functools import wraps
def my_decorator(f):
    @wraps(f)
    def wrapper(*args, **kwds):
        return f(*args, **kwds)
    return wrapper
于 2013-07-09T08:09:53.373 回答