Ana*_*ees 3 python decorator flask python-2.7
假设我有这条路线:
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():
#......
Run Code Online (Sandbox Code Playgroud)
我有2个端点与相同的装饰"@validate_access".当我运行这个代码时,我得到了
AssertionError: View function mapping is overwriting an existing endpoint function: wrapperAssertionError: View function mapping is overwriting an existing endpoint function: wrapper
Run Code Online (Sandbox Code Playgroud)
我不知道它是不是一个bug.但如果有解决方案,请通知我.
谢谢 :)
Daz*_*all 17
如果你不提供endpoint给add_url_rule或者route,该方法的名称将被作为终点.发生的事情是使用包装函数的名称创建规则,而不是装饰函数,可能是因为你没有使用functools.wraps
from functools import wraps
def my_decorator(f):
@wraps(f)
def wrapper(*args, **kwds):
return f(*args, **kwds)
return wrapper
Run Code Online (Sandbox Code Playgroud)