这是我第一次使用装饰器,我想展示类似的东西
import functools
def checkUser(tag):
def dec(f0):
@functools.wraps(f0)
def wrapper(userName, loggedinUser):
if userName == loggedinUser:
return "You are allowed to view this page"
else:
return "Error"
return wrapper
return dec
@checkUser
def test2(userName, loggedinUser):
return userName, loggedinUser
print test2()
我很确定它不起作用,这只是我的想法。我刚刚复制了这些代码并进行了编辑我真的很陌生。
答案 0 :(得分:0)
对于您提供的代码,如果您只想检查用户,则无需使用装饰器,为什么不直接比较它们?既然你想使用装饰器检查权限。我想你可能想这样做:
import functools
def check_user(username, password):
def dec(f):
@functools.wraps(f)
def wrapper(login_user, login_password):
f(login_user, login_password)
if username == login_user and password == login_password:
return "You are allowed to view this page"
else:
return "Check your password and username"
return wrapper
return dec
@check_user('jhon', 'passwd')
def test2(login_user, login_password):
print "hello, {0}".format(login_user)
print test2('jhon', 'foobar')
print test2('jhon', 'passwd')
,输出应为:
hello, jhon
Check your password and username
hello, jhon
You are allowed to view this page
你可以看到第一次输入错误的密码会给我们警告,但是当我们输入正确的信息时,它会向我们显示成功信息。