我会给出一些背景,但我认为你不需要了解flask来理解我的问题。
我有一个文件(flask_app.py
),我希望所有的函数(除了处理欢迎页面的那个)都从调用函数verify()
开始,更准确地说,这四行(但这些行是什么并不重要):
if verify():
pass
else:
return redirect("/")
如果verify
返回False
,redirect("/")
应该将用户重定向到欢迎页面。再说一遍,它不是中央。然而,在我的代码中复制粘贴这4行代码有点尴尬。我知道我可以把它写成一行,但这仍然在我代码的每个函数中重复一行。所以我的问题是:有没有办法自动做到这一点?是一个神奇的东西,我可以在Python中写在文件的开头,使所有函数(除了一个,但为了公平起见,我可以把它放在另一个文件中)在这个给定的文件中定义,从那4行开始。
这将根据验证的返回值运行myfunc或redirect。注意:要测试这一点,将验证返回值更改为True或False。
def verified():
print('verified')
return False
def redirect():
print('redirect')
def verify(func):
if verified():
return func
else:
return redirect
@verify
def myfunc():
print('myfunc')
myfunc()