我正在为我的应用程序使用flask-login插件,它已经在很大程度上开发了。
我想将所有url端点标记为" @ login_required"。
Is there any way I can do this in one place with a single line of code
rather than marking every view function with @login_required.
答案 0 :(得分:2)
您可以定义自己的装饰器。 Matt Wright's overholt template提供的example完全符合您的要求。
from functools import wraps
from flask_security import login_required
def route(bp, *args, **kwargs):
def decorator(f):
@bp.route(*args, **kwargs)
@login_required
@wraps(f)
def wrapper(*args, **kwargs):
return f(*args, **kwargs)
return f
return decorator
您可以use this decorator将路线添加到蓝图使用的任何端点,而不是直接使用蓝图的route
装饰器。
bp = Blueprint('name', __name__)
@route(bp, '/')
def route1():
return 'Hello, world!'