我想根据正则表达式模式检查某个参数值,并且只有在它们匹配时才继续。这发生在我的应用程序中的许多地方,所以我决定让一个函数进行检查并在需要时调用该函数。现在,在大多数情况下,我需要在视图的开头执行该检查,因此我将其创建为如下所示的装饰器:
def validate(f):
def _inner(request, argument=None):
if argument is None:
return HttpResponse(content="No argument given", status=400)
elif not re.match('^SOME_REGEX$', argument):
return HttpResponse(content="Invalid argument", status=400)
else:
return f(request, argument)
return _inner
但在其他情况下,我需要从函数中调用该检查器,作为嵌套条件的一部分。看来我不能直接调用它,例如validate(argument)
. 有什么办法可以使用与装饰器和普通函数相同的代码?还是我必须输入两次?