【发布时间】:2017-05-02 09:17:39
【问题描述】:
我有一个带有多个端点的烧瓶应用程序,并且我编写了一个装饰器来记录端点以用于审计目的。当我尝试使用一个端点时,装饰器工作正常,但是当我将装饰器添加到第二个端点时,我面临断言错误
例如,我有两个端点要编辑和删除
@route('/owners/<ownerid>/delete',methods=['DELETE'])
@logtrail()
def deleteOwner(ownerid):
if request.method == 'DELETE':
return jsonify({})
@route('/owners/<ownerid>/edit',methods=['PUT'])
@logtrail()
def editOwner(ownerid):
if request.method == 'PUT':
return jsonify({})
装饰器@logtrail 可以很好地用于编辑或删除编辑点,但如果将装饰器添加到两个端点,应用程序将无法启动
装饰器代码如下
def logtrail(usermsg=None):
def decorator(func):
def wrap(*args, **kwargs):
print "Audit code goes here"
return func(**kwargs)
return wrap
return decorator
我在启动应用程序时得到的确切错误是
AssertionError: View function mapping is overwriting an existing endpoint function: wrap
从错误消息中,我得到名称必须像方法名称一样是唯一的,但我怎样才能在装饰器中做到这一点?
任何建议都会有所帮助
【问题讨论】:
标签: python flask decorator python-decorators