假设我有这条路线:
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
不知道是不是bug。但是,如果有解决方案,请通知我。
谢谢 :)
最佳答案
如果您不向add_url_rule
或route
提供endpoint
,方法的名称将用作端点。发生的事情是规则是用包装函数的名称创建的,而不是装饰函数,可能是因为你没有使用 functools.wraps
from functools import wraps
def my_decorator(f):
@wraps(f)
def wrapper(*args, **kwds):
return f(*args, **kwds)
return wrapper
关于python - 使用相同的装饰器路由到 view_func "flask",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17540754/