gpt4 book ai didi

python - 一个自写的装饰器(比如@login_required)实际上在做什么?

转载 作者:太空狗 更新时间:2023-10-29 19:32:58 27 4
gpt4 key购买 nike

<分区>

在我的 Flask-App 中,我定义了一个像这样的 View 函数:

@app.route("/some/restricted/stuff")
@login_required
def main():
return render_template("overview.html",
stuff = getstuff() )

装饰器定义为:

def login_required(something):
@wraps(something)
def wrap(*args, **kwargs):
if "some_admin_name" in session:
return something(*args, **kwargs)
else:
flash("\"You shall not pass!\" - Gandalf")
return redirect(url_for("login"))
return wrap

我基本上只是复制粘贴它,因为我发现了一些使用此代码的来源,但没有解释。

很容易理解该代码的作用:它允许我使用一个装饰器,该装饰器在每个请求的 app.route() 之后和 main() 之前被调用,允许我做一些事情,比如检查事件登录和这样的。

因此,作为 Flask/Python 新手,我只想知道它究竟是如何工作的,尤其是:
- 什么是论点“某事”?这是要求吗?!
- args 和 kwargs(关键字参数?)是什么?
- 为什么我必须在方法内部包装一个方法才能将其用作装饰器?
- 这只适用于 flask 吗?还有其他类似的东西可以派上用场吗?

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