gpt4 book ai didi

python - 如何将装饰器应用于 flask 中的所有蓝图网址

转载 作者:太空狗 更新时间:2023-10-29 21:08:18 27 4
gpt4 key购买 nike

我有一个蓝图和一些 url 函数,

admin_bp = Blueprint('admin', __name__)

@admin_bp.route('/dashboard', methods=['GET', ])
@flask_login.login_required
def dashboard():

context = {}

page = 'admin/dashboard.html'
return render_template(page, **context)

@admin_bp.route('/deny', methods=['GET', ])
@flask_login.login_required
def deny():
return 'hey bro you dont belong here'

我不想为这个蓝图下的所有 url 函数复制粘贴 @flask_login.login_required 装饰器。有没有更好的方法可以为所有蓝图 url 应用装饰器?

最佳答案

您可以添加 before_request() 作为将在 View 中的每个请求之前运行的函数。

然后您将需要添加装饰器以向 before_request 函数注入(inject)额外的功能。您需要导入 login_required 装饰器以确保每个端点都需要一个登录用户。这个装饰器是 flask_login 库的一部分。

因为看起来您的 View 是管理员的一部分,我还建议您使用 @role_required('admin') before_request 函数添加自定义装饰器。该装饰器的功能将存在于其他地方并被导入。

@admin_bp.before_request
@login_required
def before_request():
""" Protect all of the admin endpoints. """
pass

关于python - 如何将装饰器应用于 flask 中的所有蓝图网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37323089/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com