我对 python 还不够了解,无法自己解决这个问题,所以这就是我想在这里尝试的原因。有没有办法让这些几乎相同的@wraps函数占用更少的空间?我总共有 5 个这样的东西,100 行 5 次同样的东西听起来很浪费。我最初在某个网站上找到过这个,但现在似乎找不到了。
功能:
def a_required(func):
@wraps(func)
def decorated_view(*args, **kwargs):
if request.method in EXEMPT_METHODS:
return func(*args, **kwargs)
elif current_app.config.get('LOGIN_DISABLED'):
return func(*args, **kwargs)
elif not current_user.is_authenticated or not current_user["Keys"]["A"]:
return current_app.login_manager.unauthorized()
return func(*args, **kwargs)
return decorated_view
def b_required(func):
@wraps(func)
def decorated_view(*args, **kwargs):
if request.method in EXEMPT_METHODS:
return func(*args, **kwargs)
elif current_app.config.get('LOGIN_DISABLED'):
return func(*args, **kwargs)
elif not current_user.is_authenticated or not current_user["Keys"]["B"]:
return current_app.login_manager.unauthorized()
return func(*args, **kwargs)
return decorated_view
Run Code Online (Sandbox Code Playgroud)
这是一个 Flask 网站,其页面只有拥有正确权限的用户才能访问。