我是Python和Flask的新手,所以我了解了如何使用装饰器的概念来检查用户是否从this answer登录。
def login_required(function_to_wrap):
@wraps(function_to_wrap)
def wrap(*args, **kwargs):
if "some_admin_name" in session:
return function_to_wrap(*args, **kwargs)
else:
flash("\"You shall not pass!\" - Gandalf")
return redirect(url_for("login"))
return wrap
在这段代码中,我不明白为什么要为login_required返回换行,并且我对该代码的控制流程感到困惑...
编辑:我的问题是为什么对封闭的函数返回 wrap ,我了解装饰器的工作原理,但是为什么我需要返回wrap?