def permission_required(permission): def decorator(view_func): @login_required def wrapper(*args, **kwargs): if permission in current_user.permissions: return view_func(*args, **kwargs) else: return abort(403) return wrapper return decorator 如何返回的端点是原来的端点?请帮我修改这段代码
时间: 2024-01-31 16:04:43 浏览: 150
在这段代码中,装饰器 `wrapper` 会替换原有的视图函数。如果你想让装饰器返回原来的端点,可以使用 Flask 提供的 `wraps` 装饰器来保留原有的函数信息,例如:
```python
from functools import wraps
from flask import abort
def permission_required(permission):
def decorator(view_func):
@wraps(view_func)
@login_required
def wrapper(*args, **kwargs):
if permission in current_user.permissions:
return view_func(*args, **kwargs)
else:
return abort(403)
return wrapper
return decorator
```
在这个修改后的代码中,我们在装饰器 `wrapper` 上使用了 `@wraps(view_func)`,这样就会保留原有的函数信息。
阅读全文